Pensez-vous que les cartes (map) en Go seront ordonnées?
sobes.tech IA
Réponse de l'IA
Par défaut, l’itération sur une map en Go ne garantit pas l’ordre des éléments. L’ordre peut changer à chaque parcours. Cela est dû à la façon dont les structures de données internes pour la map sont implémentées, afin d’atteindre une haute performance.
Cependant, il existe plusieurs méthodes pour obtenir une traversée ordonnée :
-
Tri des clés : Obtenir toutes les clés de la map, les trier, puis parcourir la map en utilisant les clés triées.
// Exemple de tri des clés package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "b": 2, "a": 1, "c": 3, } clés := make([]string, 0, len(m)) for k := range m { clés = append(clés, k) } sort.Strings(clés) // Tri des chaînes, il existe aussi sort.Ints, etc. for _, k := range clés { fmt.Println(k, m[k]) } } -
Utiliser des structures de données garantissant l’ordre : Si l’ordre est critique, on peut utiliser d’autres structures de données à la place des maps ou implémenter la sienne. Par exemple, une liste de paires clé-valeur maintenue dans un état trié.
Ainsi, les maps standard en Go ne sont pas ordonnées, mais l’ordre peut être atteint avec des opérations supplémentaires.