Menu
Coddy logo textTech

Riepilogo - Archiviazione chiave-valore

Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 93 di 109.

challenge icon

Sfida

Facile

Facciamo pratica con le mappe usando un semplice contatore di parole!

Il tuo compito è implementare un programma che conta quante volte appare ogni parola in un elenco di parole.

Requisiti:

  1. Completa la funzione addWord() che aggiunge una parola alla mappa del contatore
  2. Completa la funzione getCount() che restituisce il conteggio di una parola specifica
  3. Completa la funzione removeWord() che rimuove una parola dal contatore

Questo è un semplice ripasso di come usare le mappe per memorizzare coppie chiave-valore.

Nota: per coerenza, l'output mostrerà i conteggi delle parole in ordine alfabetico.

Provalo tu

package main

import (
	"fmt"
	"sort"
)

// addWord aggiunge una parola alla mappa dei conteggi
func addWord(counter map[string]int, word string) {
	// Inserisci qui il tuo codice
}

// getCount restituisce il conteggio di una parola specifica
func getCount(counter map[string]int, word string) int {
	// Inserisci qui il tuo codice
	return 0
}

// removeWord rimuove una parola dal contatore
// Restituisce true se la parola è stata trovata e rimossa
func removeWord(counter map[string]int, word string) bool {
	// Inserisci qui il tuo codice
	return false
}

// printWordCounts stampa i conteggi delle parole in ordine alfabetico
func printWordCounts(counter map[string]int) {
	// Ottieni tutte le chiavi (parole) dalla mappa
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Ordina le parole alfabeticamente
	sort.Strings(words)
	
	// Stampa ogni parola e il relativo conteggio nell'ordine stabilito
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Inizializza la mappa dei conteggi delle parole
	wordCounter := make(map[string]int)
	
	// Aggiungi alcune parole
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// Stampa i conteggi delle parole
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Ottieni il conteggio di parole specifiche
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Rimuovi una parola
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Prova a rimuovere una parola inesistente
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// Stampa i conteggi finali delle parole
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Go online