Les maps
13 min · Intermédiaire · 3 octobre 2026
Créer et utiliser une map
ages := map[string]int{"Alice": 25, "Bob": 30}
fmt.Println(ages["Alice"]) // 25
ages["Claire"] = 28 // ajoute une nouvelle cle
ages["Bob"] = 31 // modifie une cle existante
fmt.Println(len(ages)) // 3 map[string]int déclare le type des clés (string) et le type des valeurs (int) entre crochets.
Attention
Accéder à une clé absente (ages["Zoe"]) ne provoque aucune erreur : elle renvoie silencieusement 0 (la valeur zéro de int), ce qui peut masquer un bug si on ne vérifie pas explicitement la présence de la clé.
Vérifier la présence d’une clé
valeur, ok := ages["Zoe"]
fmt.Println(valeur, ok) // 0 false : Zoe est absente
valeur, ok = ages["Alice"]
fmt.Println(valeur, ok) // 25 true : Alice est presente ok distingue de façon fiable une clé absente (ok à false) d’une clé présente valant justement 0 (ok à true), une ambiguïté impossible à lever avec un simple accès direct.
Supprimer une clé
delete(ages, "Bob")
fmt.Println(ages) // map[Alice:25 Claire:28] delete() ne provoque aucune erreur même si la clé n’existe pas, elle ne fait simplement rien dans ce cas.
Parcourir une map
for nom, age := range ages {
fmt.Println(nom, "a", age, "ans.")
}
// l'ordre de parcours d'une map n'est jamais garanti en Go Info
Contrairement à un slice, l’ordre de parcours d’une map avec range n’est jamais garanti : deux exécutions successives du même programme peuvent afficher les paires dans un ordre différent.
À toi de jouer
stock := map[string]int{"pommes": 10, "bananes": 5}
quantite, existe := stock["cerises"]
fmt.Println(quantite, existe)