Recapitulação - Armazenamento Chave-Valor
Parte da seção Fundamentos do Journey de GO da Coddy — lição 93 de 109.
Desafio
FácilVamos praticar o uso de maps com um contador de palavras simples!
Sua tarefa é implementar um programa que conte quantas vezes cada palavra aparece em uma lista de palavras.
Requisitos:
- Complete a função
addWord()que adiciona uma palavra ao map contador - Complete a função
getCount()que retorna a contagem de uma palavra específica - Complete a função
removeWord()que remove uma palavra do contador
Este é um resumo simples de como usar maps como armazenamento de chave-valor.
Nota: A saída exibirá as contagens de palavras em ordem alfabética para consistência.
Experimente você mesmo
package main
import (
"fmt"
"sort"
)
// addWord adiciona uma palavra ao mapa contador
func addWord(counter map[string]int, word string) {
// Seu código aqui
}
// getCount retorna a contagem de uma palavra específica
func getCount(counter map[string]int, word string) int {
// Seu código aqui
return 0
}
// removeWord remove uma palavra do contador
// Retorna true se a palavra foi encontrada e removida
func removeWord(counter map[string]int, word string) bool {
// Seu código aqui
return false
}
// printWordCounts imprime as contagens de palavras em ordem alfabética
func printWordCounts(counter map[string]int) {
// Obtém todas as chaves (palavras) do mapa
words := make([]string, 0, len(counter))
for word := range counter {
words = append(words, word)
}
// Ordena as palavras alfabeticamente
sort.Strings(words)
// Imprime cada palavra e sua contagem em ordem classificada
for _, word := range words {
fmt.Printf("%s: %d\n", word, counter[word])
}
}
func main() {
// Inicializa o mapa contador de palavras
wordCounter := make(map[string]int)
// Adiciona algumas palavras
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
for _, word := range words {
addWord(wordCounter, word)
}
// Imprime as contagens de palavras
fmt.Println("Word counts:")
printWordCounts(wordCounter)
// Obtém a contagem de palavras específicas
fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
// Remove uma palavra
removed := removeWord(wordCounter, "banana")
fmt.Printf("\nRemoved 'banana': %v\n", removed)
// Tenta remover uma palavra inexistente
removed = removeWord(wordCounter, "grape")
fmt.Printf("Removed 'grape': %v\n", removed)
// Imprime as contagens finais de palavras
fmt.Println("\nFinal word counts:")
printWordCounts(wordCounter)
}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ável3Operadores 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ões9Ponteiros
O que é um Ponteiro?Declarando Variáveis de PonteiroO Operador de EndereçoDesreferenciando PonteirosUsando Ponteiros em FunçõesPonteiros NilRecapitulação - Entendendo Ponteiros12Tipos Compostos: Mapas
Introdução a MapasDeclarando Literais de MapasCriando Mapas com `make`Adicionando e Atualizando Chave-ValorAcessando Valores de MapasVerificando a Existência de ChavesDeletando Entradas de MapasTamanho do MapaIterando sobre MapasRecapitulação - Armazenamento Chave-Valor