项目概览
本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 45 课,共 68 课。
挑战
简单你即将构建一个简单的库存检查器,帮助你管理商品库存数量。
创建核心数据结构并显示初始库存数据,为库存管理系统搭建基础。本挑战将创建 Product 结构体和库存映射,后续整个项目都会用到它们。
你会收到两项输入:
- 一个包含商店信息的字符串,格式为
"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")
你的任务是:
- 创建一个
Product结构体,包含两个字段:Price(float64),商品价格Quantity(int),当前库存数量
- 用逗号分割第一项输入,获取商店名称和地点
- 用逗号分割第二项输入,获取各个商品条目
- 对每个商品条目用冒号分割,获取商品名称、价格和数量
- 将价格字符串转换为 float64,将数量字符串转换为 int
- 创建一个名为
inventory的映射,键为商品名称(字符串),值为Product结构体 - 用解析后的商品数据填充库存映射
- 显示商店信息:
"=== [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. 显示系统状态
}逻辑与流程中的所有课
自己练习: Go 在线编译器