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 cómo trabajar con slices en Go creando un administrador sencillo de listas de compras!
Tu tarea es implementar varias funciones que manipulen una lista de compras:
addItems: Agregar nuevos artículos a la lista de comprasremoveItem: Quitar un artículo de la lista por índicefindExpensiveItems: Encontrar artículos con precios por encima de un umbralcalculateTotalCost: Calcular el costo total de todos los artículos
Cada artículo de la lista de compras se representa mediante un string (nombre) y un float64 (precio). La función principal muestra todas estas operaciones en conjunto.
Pruébalo tú mismo
package main
import "fmt"
// addItems añade 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 el 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 cuyos precios superan el 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() {
// Inicializa las listas de compras vacías
names := []string{}
prices := []float64{}
// Añade los artículos iniciales
initialNames := []string{"Apples", "Milk", "Bread"}
initialPrices := []float64{2.99, 3.49, 2.29}
names, prices = addItems(names, prices, initialNames, initialPrices)
// Imprime 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])
}
// Calcula e imprime el costo total
total := calculateTotalCost(prices)
fmt.Printf("\nTotal Cost: $%.2f\n", total)
// Busca e imprime los artículos caros
priceThreshold := 3.00
expensiveItems := findExpensiveItems(names, prices, priceThreshold)
fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
for _, item := range expensiveItems {
fmt.Println(item)
}
// Añade un nuevo artículo
names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
// Elimina un artículo
names, prices = removeItem(names, prices, 1)
fmt.Println("\nRemoved item at index 1")
// Imprime 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 decisionesPractica por tu cuenta: Compilador de Go online