Fonctionnement interne des maps
Comprendre comment les maps stockent les données
Fonctionnement interne des maps est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce qu'une table associative
Une table associative stocke des paires clé-valeur. Chaque clé est associée à une valeur, et les recherches sont très rapides en moyenne.
En Go, vous écrivez map[KeyType]ValueType.
package main
import "fmt"
func main() {
ages := map[string]int{"Ann": 30, "Bob": 25}
fmt.Println(ages["Ann"])
}Les tables de hachage sous-jacentes
Les tables associatives de Go sont implémentées sous forme de tables de hachage. Une fonction de hachage transforme chaque clé en un nombre qui désigne un compartiment où la valeur est stockée.
Compartiments
La table associative stocke ses entrées dans des compartiments. Chaque compartiment contient plusieurs paires clé-valeur. Le hachage d'une clé détermine le compartiment auquel elle est attribuée, ce qui permet des recherches moyennes en O(1).
Création avec make
Vous pouvez créer une table associative vide avec make. Vous pouvez aussi fournir une indication de taille pour préallouer l'espace.
package main
import "fmt"
func main() {
scores := make(map[string]int)
scores["x"] = 10
fmt.Println(scores)
}Tables associatives nil
Une table associative déclarée sans initialisation vaut nil. Vous pouvez lire dans une table associative nil (vous obtenez des valeurs zéro), mais toute écriture provoque une panique. Initialisez-la toujours avant d'y écrire.
package main
import "fmt"
func main() {
var m map[string]int
fmt.Println(m == nil)
fmt.Println(m["missing"])
}Ajout et mise à jour
L'affectation d'une valeur à une clé l'ajoute si elle est nouvelle ou remplace la valeur existante.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1}
m["b"] = 2
m["a"] = 99
fmt.Println(m)
}Suppression de clés
La fonction intégrée delete supprime une clé. Supprimer une clé absente ne produit aucun effet et ne pose aucun problème.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2}
delete(m, "a")
fmt.Println(m)
}Taille d'une table associative
len renvoie le nombre de paires clé-valeur actuellement présentes dans la table associative.
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2, "c": 3}
fmt.Println(len(m))
}Les tables associatives s'agrandissent automatiquement
À mesure que vous ajoutez des entrées, Go agrandit la table sous-jacente et peut recalculer le hachage des clés pour les placer dans de nouveaux compartiments. Cela se fait automatiquement : vous n'avez donc pas à gérer la capacité manuellement.
Types de clés autorisés
Les clés doivent être comparables : il doit être possible de les utiliser avec ==. Les chaînes, les nombres, les booléens et les structures dont les champs sont comparables conviennent. Les tranches et les tables associatives ne peuvent pas servir de clés.
package main
import "fmt"
func main() {
type Point struct{ X, Y int }
m := map[Point]string{{1, 2}: "origin-ish"}
fmt.Println(m[Point{1, 2}])
}Sémantique de référence
Une valeur de table associative est une référence aux données sous-jacentes. Le fait de transmettre une table associative à une fonction permet à cette fonction de modifier la même table, sans pointeur.
package main
import "fmt"
func addOne(m map[string]int) {
m["count"]++
}
func main() {
m := map[string]int{"count": 0}
addOne(m)
fmt.Println(m)
}Vérification rapide
Que se passe-t-il si vous essayez d'écrire une clé dans une table associative nil ?
Récapitulatif
Fonctionnement interne des tables associatives :
- Les tables associatives sont des tables de hachage organisées en compartiments
- Les recherches, insertions et suppressions prennent O(1) en moyenne
- Les clés doivent être comparables ; l'écriture dans une table associative nil provoque une panique
- Les tables associatives ont une sémantique de référence
Questions Fréquemment Posées
La leçon « Fonctionnement interne des maps » est-elle gratuite ?
Oui — le texte complet de « Fonctionnement interne des maps » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctionnement interne des maps » ?
Comprendre comment les maps stockent les données Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Fonctionnement interne des maps » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctionnement interne des maps
- Vérifier l’existence
- Les maps comme ensembles
- Itération et ordre