プロジェクトの概要
CoddyのGOジャーニー「論理とフロー」セクションの一部 — レッスン 45/68。
チャレンジ
簡単製品の在庫レベルを管理するのに役立つ、シンプルな在庫チェッカーを作成しましょう。
コアとなるデータ構造を作成し、初期在庫データを表示することで、在庫管理システムの基盤を構築します。このチャレンジでは、プロジェクト全体で使用される Product 構造体と在庫マップを確立します。
2つの入力を受け取ります:
"store_name,location"形式の店舗情報を含む文字列(例:"TechStore,Downtown")"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"形式の初期製品データを含む文字列(例:"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
あなたのタスクは以下の通りです:
- 2つのフィールドを持つ
Product構造体を作成します:Price(float64) - 製品の価格Quantity(int) - 現在の在庫数
- 最初の入力をカンマで分割して、店舗名と場所を取得します
- 2番目の入力をカンマで分割して、個々の製品エントリを取得します
- 各製品エントリについて、コロンで分割して製品名、価格、数量を取得します
- 価格の文字列を float64 に、数量の文字列を int に変換します
- キーが製品名(文字列)で、値が
Product構造体であるinventoryという名前のマップを作成します - 解析した製品データで在庫マップを埋めます
- 店舗情報を表示します:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- 現在の在庫を製品名のアルファベット順に表示します:
"Current Inventory:"- 各製品について:
"- [product_name]: $[price] (Stock: [quantity])"
- 在庫統計を計算して表示します:
"Inventory Statistics:""Total Products: [total_number_of_products]""Total Items in Stock: [sum_of_all_quantities]""Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
- システムステータスを表示します:
"System Status: Ready""Inventory management system initialized successfully"
入力文字列の分割には strings パッケージ、文字列から数値への変換には strconv パッケージ、書式付き出力には fmt パッケージ、製品名をアルファベット順にソートするには sort パッケージを使用してください。在庫の総額は小数点以下2桁まで表示してください。このチャレンジは、在庫管理プロジェクトの以降のレッスンで拡張される基礎となるデータ構造を確立するものです。
自分で試してみよう
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: ここでProduct構造体を定義します
func main() {
// スペースを適切に処理するためにbufio.Scannerを使用して入力を読み取ります
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: 以下にコードを記述してください
// 1. 店舗情報を解析します(カンマで分割し、長さを確認します)
// 2. 商品データを解析します(カンマで分割し、各商品をコロンで分割します)
// 3. 在庫マップを作成します
// 4. 文字列を適切な型に変換し、在庫データを入力します
// 5. 店舗情報を表示します
// 6. 現在の在庫を表示します(アルファベット順にソート)
// 7. 在庫統計を計算して表示します
// 8. システムステータスを表示します
}