Recapitulação - Listas Dinâmicas
Parte da seção Fundamentos do Journey de GO da Coddy — lição 83 de 109.
Desafio
MédioVamos 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:
addItems: Adiciona novos itens à lista de comprasremoveItem: Remove um item da lista pelo índicefindExpensiveItems: Encontra itens com preços acima de um limitecalculateTotalCost: 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
4Operadores de Comparação e Lógicos
Operadores de Comparação - Parte 1Operadores de Comparação - Parte 2Operador Lógico ANDOperador Lógico OROperador Lógico NOTFundamentos de Precedência de OperadoresRecapitulação - Fazendo Comparações7Fluxo de Controle: Loops
O Loop `for` ExplicadoLoop For - BásicoLoop For - Apenas CondiçãoA Palavra-chave `break`A Palavra-chave `continue`Loops AninhadosRecapitulação - Repetindo Ações2Variáveis e Tipos de Dados Básicos
O que é uma variávelInferência de Tipo com `:=`Inteiros (int)Números de Ponto FlutuanteBooleanosStringsValores ZeroConstantesConvenções de NomenclaturaRecapitulação - Variáveis e Tipos5Entrada/Saída Básica
Saída FormatadaVerbos de FormataçãoImprimindo TiposObtendo Entrada Básica do UsuárioRecapitulação - Entrada e Saída8Funções
Entendendo FunçõesDeclarando uma FunçãoChamando FunçõesParâmetros de FunçãoRetornando um Único ValorRetornando Múltiplos ValoresValores de Retorno NomeadosFundamentos de Escopo de FunçãoRecapitulação - Criando Código Reutilizável11Tipos Compostos: Slices
Introdução aos SlicesDeclarando Literais de SliceCriando Slices com `make`Comprimento vs Capacidade de SlicesAcessando Elementos de SlicesAdicionando ElementosFatiando Slices/Arrays ExistentesIterando sobre SlicesCopiando SlicesRecapitulação - Listas Dinâmicas3Operadores Básicos
Operadores AritméticosOperador de DivisãoO Operador MóduloOperador de AtribuiçãoOperadores de Atribuição CompostaIncremento e DecrementoRecapitulação - Cálculos6Fluxo de Controle: Condicionais
A Instrução `if`A Palavra-chave `else`A Palavra-chave `else if`Sombreamento de Variáveis no `if`Inicializando VariáveisA Instrução `switch`Switch com ExpressõesSwitch sem ExpressãoA Palavra-chave `fallthrough`Recapitulação - Tomando Decisões