Visão Geral do Projeto
Parte da seção Lógica & Fluxo do Journey de GO da Coddy — lição 45 de 68.
Desafio
FácilVocê está prestes a construir um verificador de inventário simples que o ajudará a gerenciar os níveis de estoque de produtos.
Prepare a base para o seu sistema de gerenciamento de inventário criando as estruturas de dados principais e exibindo os dados iniciais do inventário. Este desafio estabelece a struct Product e o mapa de inventário que serão usados ao longo do projeto.
Você receberá duas entradas:
- Uma string contendo informações da loja no formato
"store_name,location"(ex:"TechStore,Downtown") - Uma string contendo os dados iniciais dos produtos no formato
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(ex:"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
Sua tarefa é:
- Criar uma struct
Productcom dois campos:Price(float64) - o preço do produtoQuantity(int) - a quantidade atual em estoque
- Analisar a primeira entrada dividindo-a por vírgulas para obter o nome e a localização da loja
- Analisar a segunda entrada dividindo-a por vírgulas para obter as entradas individuais de produtos
- Para cada entrada de produto, dividir por dois-pontos para obter o nome, preço e quantidade do produto
- Converter a string de preço para float64 e a string de quantidade para int
- Criar um mapa chamado
inventoryonde as chaves são nomes de produtos (strings) e os valores são structsProduct - Preencher o mapa de inventário com os dados de produtos analisados
- Exibir as informações da loja:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- Exibir o inventário atual em ordem alfabética pelo nome do produto:
"Current Inventory:"- Para cada produto:
"- [product_name]: $[price] (Stock: [quantity])"
- Calcular e exibir as estatísticas do inventário:
"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]"
- Exibir o status do sistema:
"System Status: Ready""Inventory management system initialized successfully"
Use o pacote strings para dividir as strings de entrada, o pacote strconv para converter strings em números, o pacote fmt para saída formatada e o pacote sort para ordenar os nomes dos produtos em ordem alfabética. Formate o valor total do inventário com 2 casas decimais. Este desafio estabelece as estruturas de dados fundamentais que serão estendidas em lições subsequentes do projeto de gerenciamento de inventário.
Experimente você mesmo
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: Defina a struct Product aqui
func main() {
// Ler a entrada usando bufio.Scanner para lidar com espaços adequadamente
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: Escreva seu código abaixo
// 1. Analisar informações da loja (separar por vírgula, verificar comprimento)
// 2. Analisar dados dos produtos (separar por vírgula, depois por dois pontos para cada produto)
// 3. Criar mapa de inventário
// 4. Converter strings para os tipos apropriados e preencher o inventário
// 5. Exibir informações da loja
// 6. Exibir inventário atual (ordenado alfabeticamente)
// 7. Calcular e exibir estatísticas do inventário
// 8. Exibir status do sistema
}Todas as lições de Lógica & Fluxo
1Fluxo de Controle Avançado
Switch com `fallthrough`Interrompendo Loops AninhadosContinuando um Loop EspecíficoA Instrução `goto`Recapitulação - Controle de Loop Avançado4Projeto: Lista de Tarefas Simples
Configuração do ProjetoAdicionando uma Tarefa2Structs e Métodos
Definindo Métodos em StructsRecebedores de ValorRecebedores de PonteiroEscolhendo RecebedoresMétodos vs FunçõesRecapitulação - Comportamento de Structs5Mapas em Profundidade
Mapas de StructsPonteiros como Valores de MapVerificando Mapas NilComparando MapasRecapitulação - Contador de Frequência de Palavras8Projeto: Inventário Simples
Visão Geral do ProjetoVerificando o Estoque3Interfaces (O Básico)
O que é uma Interface?Definindo uma InterfaceImplementando uma InterfaceUsando Tipos de InterfaceInterface VaziaAsserções de TipoType SwitchRecapitulação - Formas e Comportamentos