Senior
Qu'est-ce qu'une map en Go, comment est-elle organisée à l'intérieur, qu'est-ce qu'une collision et comment y faire face?
sobes.tech IA
Réponse de l'IA
En Go, map est un type de données intégré pour stocker des paires clé-valeur avec un accès rapide. À l’intérieur de map, un mécanisme de table de hachage est implémenté.
Structure interne :
- La clé est hachée en une valeur entière.
- Le hash détermine l’indice du bucket où sont stockées les paires.
- Chaque bucket contient plusieurs paires clé-valeur.
Collision — situation où différentes clés ont le même hash et tombent dans le même bucket. Pour gérer cela, Go utilise :
- Le stockage de plusieurs paires dans un même bucket.
- Lorsqu’il y a beaucoup de collisions, un réarrangement (rehash) est effectué en augmentant le nombre de buckets.
Cela permet de maintenir un accès rapide aux éléments même en cas de collisions.
Exemple d’utilisation de map :
m := make(map[string]int)
m["apple"] = 5
fmt.Println(m["apple"]) // 5
Ainsi, map en Go est une structure efficace pour les tableaux associatifs avec une optimisation interne pour minimiser l’impact des collisions.