Resumen - Listas dinámicas
Parte de la sección Fundamentos del Journey de GO de Coddy — lección 83 de 109.
Desafío
Intermedio¡Practiquemos el trabajo con slices en Go creando un sencillo gestor de listas de la compra!
Tu tarea es implementar varias funciones que manipulen una lista de la compra:
addItems: Añadir nuevos artículos a la lista de la compraremoveItem: Eliminar un artículo de la lista por índicefindExpensiveItems: Encontrar artículos con precios por encima de un umbralcalculateTotalCost: Calcular el coste total de todos los artículos
Cada artículo de la lista de la compra está representado por un string (nombre) y un float64 (precio). La función main demuestra todas estas operaciones trabajando juntas.
Pruébalo tú mismo
package main
import "fmt"
// addItems agrega nuevos artículos y sus precios a la lista de compras
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
// Tu código aquí
return names, prices
}
// removeItem elimina un artículo en el índice especificado
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
// Tu código aquí
return names, prices
}
// findExpensiveItems devuelve los artículos con precios por encima del umbral
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
// Tu código aquí
return nil
}
// calculateTotalCost devuelve la suma de todos los precios
func calculateTotalCost(prices []float64) float64 {
// Tu código aquí
return 0
}
func main() {
// Inicializar listas de compras vacías
names := []string{}
prices := []float64{}
// Agregar artículos iniciales
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// Imprimir la lista de compras inicial
fmt.Println("Initial Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
// Calcular e imprimir el costo total
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Buscar e imprimir artículos costosos
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Agregar un nuevo artículo
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Eliminar un artículo
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// Imprimir la lista de compras final
fmt.Println("\nFinal Shopping List:")
for i := range names {
fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
}
}Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparación - Parte 1Operadores de comparación - Parte 2Operador lógico ANDOperador lógico OROperador lógico NOTConceptos básicos de precedencia de operadoresResumen: Realizar comparaciones7Flujo de control: Bucles
Explicación del bucle `for`Bucle `for` - BásicoBucle `for` - Solo condiciónLa palabra clave `break`La palabra clave `continue`Bucles anidadosResumen - Repetición de acciones2Variables y tipos de datos básicos
¿Qué es una variable?Inferencia de tipos con `:=`Enteros (int)Números de punto flotanteBooleanosStringsValores ceroConstantesConvenciones de nomenclaturaResumen - Variables y tipos5Entrada y salida básica
Salida con formatoVerbos de formatoImpresión de tiposObtener entrada básica del usuarioResumen: Entrada y salida8Funciones
Comprendiendo las funcionesDeclaración de una funciónLlamada a funcionesParámetros de funciónRetorno de un solo valorRetorno de múltiples valoresValores de retorno con nombreConceptos básicos del alcance de las funcionesResumen: Creando código reutilizable3Operadores básicos
Operadores aritméticosOperador de divisiónEl operador móduloOperador de asignaciónOperadores de asignación compuestaIncremento y decrementoResumen - Cálculos6Flujo de control: Condicionales
La sentencia `if`La palabra clave `else`La palabra clave `else if`Sombreado de variables en `if`Inicialización de variablesLa sentencia `switch``switch` con expresiones`switch` sin expresiónLa palabra clave `fallthrough`Resumen: Toma de decisiones