Menu
Coddy logo textTech

Resumen - Listas dinámicas

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 83 de 109.

challenge icon

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:

  1. addItems: Añadir nuevos artículos a la lista de la compra
  2. removeItem: Eliminar un artículo de la lista por índice
  3. findExpensiveItems: Encontrar artículos con precios por encima de un umbral
  4. calculateTotalCost: 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