0Pricing
Go Academy · Leçon

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

  1. Fonctionnement interne des maps
  2. Vérifier l’existence
  3. Les maps comme ensembles
  4. Itération et ordre
← Retour à Go Academy