Menu
Coddy logo textTech

Recapitulação - Listas Dinâmicas

Parte da seção Fundamentos do Journey de GO da Coddy — lição 83 de 109.

challenge icon

Desafio

Médio

Vamos praticar o trabalho com slices em Go criando um gerenciador de lista de compras simples!

Sua tarefa é implementar várias funções que manipulam uma lista de compras:

  1. addItems: Adiciona novos itens à lista de compras
  2. removeItem: Remove um item da lista pelo índice
  3. findExpensiveItems: Encontra itens com preços acima de um limite
  4. calculateTotalCost: Calcula o custo total de todos os itens

Cada item na lista de compras é representado por uma string (nome) e um float64 (preço). A função principal demonstra todas essas operações funcionando juntas.

Experimente você mesmo

package main

import "fmt"

// addItems adiciona novos itens e seus preços à lista de compras
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
	// Seu código aqui
	return names, prices
}

// removeItem remove um item no índice especificado
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
	// Seu código aqui
	return names, prices
}

// findExpensiveItems retorna itens com preços acima do limite
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
	// Seu código aqui
	return nil
}

// calculateTotalCost retorna a soma de todos os preços
func calculateTotalCost(prices []float64) float64 {
	// Seu código aqui
	return 0
}

func main() {
	// Inicializa listas de compras vazias
	names := []string{}
	prices := []float64{}
	
	// Adiciona itens iniciais
	initialNames := []string{"Apples", "Milk", "Bread"}
	initialPrices := []float64{2.99, 3.49, 2.29}
	
	names, prices = addItems(names, prices, initialNames, initialPrices)
	
	// Imprime a 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 o custo total
	total := calculateTotalCost(prices)
	fmt.Printf("\nTotal Cost: $%.2f\n", total)
	
	// Encontra e imprime itens caros
	priceThreshold := 3.00
	expensiveItems := findExpensiveItems(names, prices, priceThreshold)
	
	fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
	for _, item := range expensiveItems {
		fmt.Println(item)
	}
	
	// Adiciona um novo item
	names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
	
	// Remove um item
	names, prices = removeItem(names, prices, 1)
	fmt.Println("\nRemoved item at index 1")
	
	// Imprime a 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 as lições de Fundamentos