Descripción general del proyecto
Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 45 de 68.
Desafío
FácilEstás a punto de construir un comprobador de inventario sencillo que te ayudará a gestionar los niveles de stock de los productos.
Establece las bases para tu sistema de gestión de inventario creando las estructuras de datos principales y mostrando los datos iniciales del inventario. Este desafío establece la estructura Product y el mapa de inventario que se utilizarán a lo largo del proyecto.
Recibirás dos entradas:
- Una cadena que contiene la información de la tienda en el formato
"store_name,location"(por ejemplo,"TechStore,Downtown") - Una cadena que contiene los datos iniciales del producto en el formato
"product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3"(por ejemplo,"Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")
Tu tarea es:
- Crear una estructura
Productcon dos campos:Price(float64) - el precio del productoQuantity(int) - la cantidad actual en stock
- Analizar la primera entrada dividiéndola por comas para obtener el nombre y la ubicación de la tienda
- Analizar la segunda entrada dividiéndola por comas para obtener las entradas de productos individuales
- Para cada entrada de producto, dividir por dos puntos para obtener el nombre, el precio y la cantidad del producto
- Convertir la cadena de precio a float64 y la cadena de cantidad a int
- Crear un mapa llamado
inventorydonde las claves son nombres de productos (strings) y los valores son estructurasProduct - Poblar el mapa de inventario con los datos de productos analizados
- Mostrar la información de la tienda:
"=== [store_name] Inventory System ===""Location: [location]""Inventory initialized with [number_of_products] products"
- Mostrar el inventario actual en orden alfabético por nombre de producto:
"Current Inventory:"- Para cada producto:
"- [product_name]: $[price] (Stock: [quantity])"
- Calcular y mostrar las estadísticas del inventario:
"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]"
- Mostrar el estado del sistema:
"System Status: Ready""Inventory management system initialized successfully"
Utiliza el paquete strings para dividir las cadenas de entrada, el paquete strconv para convertir cadenas a números, el paquete fmt para la salida formateada y el paquete sort para ordenar los nombres de los productos alfabéticamente. Formatea el valor total del inventario con 2 decimales. Este desafío establece las estructuras de datos fundamentales que se ampliarán en las lecciones posteriores del proyecto de gestión de inventario.
Pruébalo tú mismo
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
// TODO: Define la estructura Product aquí
func main() {
// Leer la entrada usando bufio.Scanner para manejar los espacios correctamente
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
storeInfo := scanner.Text()
scanner.Scan()
productData := scanner.Text()
// TODO: Escribe tu código a continuación
// 1. Analizar la información de la tienda (dividir por coma, verificar la longitud)
// 2. Analizar los datos del producto (dividir por coma, luego por dos puntos para cada producto)
// 3. Crear el mapa de inventario
// 4. Convertir cadenas a los tipos apropiados y poblar el inventario
// 5. Mostrar la información de la tienda
// 6. Mostrar el inventario actual (ordenado alfabéticamente)
// 7. Calcular y mostrar las estadísticas del inventario
// 8. Mostrar el estado del sistema
}Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras8Proyecto: Inventario simple
Descripción general del proyectoVerificar el stock3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientos