Обзор проекта
Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 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. Отображение статуса системы
}Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов8Проект: Простой учет товаров
Обзор проектаПроверка остатков3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведение