Menu
Coddy logo textTech

Recapitulação - Armazenamento Chave-Valor

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

challenge icon

Desafio

Fácil

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

  1. Complete a função addWord() que adiciona uma palavra ao map contador
  2. Complete a função getCount() que retorna a contagem de uma palavra específica
  3. 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