Menu
CoddyTech

项目概览

本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 45 课,共 68 课。

challenge icon

挑战

简单

你即将构建一个简单的库存检查器,帮助你管理商品库存数量。

创建核心数据结构并显示初始库存数据,为库存管理系统搭建基础。本挑战将创建 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")

你的任务是:

  1. 创建一个 Product 结构体,包含两个字段:
    • Price(float64),商品价格
    • Quantity(int),当前库存数量
  2. 用逗号分割第一项输入,获取商店名称和地点
  3. 用逗号分割第二项输入,获取各个商品条目
  4. 对每个商品条目用冒号分割,获取商品名称、价格和数量
  5. 将价格字符串转换为 float64,将数量字符串转换为 int
  6. 创建一个名为 inventory 的映射,键为商品名称(字符串),值为 Product 结构体
  7. 用解析后的商品数据填充库存映射
  8. 显示商店信息:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. 按商品名称的字母顺序显示当前库存:
    • "Current Inventory:"
    • 对每件商品,显示:"- [product_name]: $[price] (Stock: [quantity])"
  10. 计算并显示库存统计数据:
    • "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]"
  11. 显示系统状态:
    • "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 在线编译器