Menu
CoddyTech

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 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:

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

Practica por tu cuenta: Compilador de Go online