Récapitulatif - Stockage clé-valeur
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 93 sur 109.
Défi
FacilePratiquons l'utilisation des maps avec un simple compteur de mots !
Votre tâche consiste à implémenter un programme qui compte le nombre de fois que chaque mot apparaît dans une liste de mots.
Exigences :
- Complétez la fonction
addWord()qui ajoute un mot à la map du compteur - Complétez la fonction
getCount()qui renvoie le compte pour un mot spécifique - Complétez la fonction
removeWord()qui supprime un mot du compteur
Il s'agit d'un simple récapitulatif de la manière d'utiliser les maps comme stockage clé-valeur.
Remarque : La sortie affichera les comptes de mots par ordre alphabétique pour plus de cohérence.
Essayez vous-même
package main
import (
"fmt"
"sort"
)
// addWord ajoute un mot à la map du compteur
func addWord(counter map[string]int, word string) {
// Votre code ici
}
// getCount retourne le nombre d'occurrences pour un mot spécifique
func getCount(counter map[string]int, word string) int {
// Votre code ici
return 0
}
// removeWord supprime un mot du compteur
// Retourne true si le mot a été trouvé et supprimé
func removeWord(counter map[string]int, word string) bool {
// Votre code ici
return false
}
// printWordCounts affiche le décompte des mots par ordre alphabétique
func printWordCounts(counter map[string]int) {
// Récupérer toutes les clés (mots) de la map
words := make([]string, 0, len(counter))
for word := range counter {
words = append(words, word)
}
// Trier les mots par ordre alphabétique
sort.Strings(words)
// Afficher chaque mot et son décompte dans l'ordre trié
for _, word := range words {
fmt.Printf("%s: %d\n", word, counter[word])
}
}
func main() {
// Initialiser la map du compteur de mots
wordCounter := make(map[string]int)
// Ajouter quelques mots
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
for _, word := range words {
addWord(wordCounter, word)
}
// Afficher le décompte des mots
fmt.Println("Word counts:")
printWordCounts(wordCounter)
// Obtenir le décompte pour des mots spécifiques
fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
// Supprimer un mot
removed := removeWord(wordCounter, "banana")
fmt.Printf("\nRemoved 'banana': %v\n", removed)
// Essayer de supprimer un mot inexistant
removed = removeWord(wordCounter, "grape")
fmt.Printf("Removed 'grape': %v\n", removed)
// Afficher le décompte final des mots
fmt.Println("\nFinal word counts:")
printWordCounts(wordCounter)
}Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaison - Partie 1Opérateurs de comparaison - Partie 2Opérateur logique ANDOpérateur logique OROpérateur logique NOTBases de la priorité des opérateursRécapitulatif - Effectuer des comparaisons7Structures de contrôle : Les boucles
Explication de la boucle `for`Boucle For - Les basesBoucle For - Condition uniquementLe mot-clé `break`Le mot-clé `continue`Boucles imbriquéesRécapitulatif - Répéter des actions2Variables et types de données de base
Qu'est-ce qu'une variableInférence de type avec `:=` Entiers (int)Nombres à virgule flottanteBooléensChaînes de caractères (Strings)Valeurs zéroConstantesConventions de nommageRécapitulatif - Variables et types5Entrées/Sorties de base
Sortie formatéeVerbes de formatageAffichage des typesSaisie utilisateur de baseRécapitulatif - Entrées et Sorties8Fonctions
Comprendre les fonctionsDéclarer une fonctionAppeler des fonctionsParamètres de fonctionRetourner une valeur uniqueRetourner plusieurs valeursValeurs de retour nomméesBases de la portée des fonctionsRécapitulatif - Créer du code réutilisable11Types composites : Slices
Introduction aux SlicesDéclaration de littéraux de SlicesCréation de Slices avec `make`Longueur vs Capacité des SlicesAccès aux éléments d'un SliceAjout d'élémentsDécoupage de Slices/Tableaux existantsItération sur les SlicesCopie de SlicesRécapitulatif - Listes dynamiques3Opérateurs de base
Opérateurs arithmétiquesOpérateur de divisionL'opérateur moduloOpérateur d'affectationOpérateurs d'affectation augmentéeIncrémentation et décrémentationRécapitulatif - Calculs6Structure de contrôle : Les conditionnelles
L'instruction `if`Le mot-clé `else`Le mot-clé `else if`Masquage de variable dans `if`Initialisation des variablesL'instruction `switch``switch` avec expressions`switch` sans expressionLe mot-clé `fallthrough`Récapitulatif - Prendre des décisions9Pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de variables pointeursL'opérateur d'adresseDéréférencement de pointeursUtiliser des pointeurs dans les fonctionsPointeurs NilRécapitulatif - Comprendre les pointeurs12Types composites : Maps
Introduction aux MapsDéclaration de littéraux de MapCréation de Maps avec `make`Ajout et mise à jour de paires clé-valeurAccès aux valeurs d'une MapVérification de l'existence d'une cléSuppression d'entrées de MapTaille d'une MapItération sur les MapsRécapitulatif - Stockage clé-valeur