Impression de cartes Go hors service
Dans Go, les cartes sont implémentées à l'aide d'une table de hachage, qui conserve les paires clé-valeur dans un format non -mode commandée. Par conséquent, parcourir une carte ne garantit pas l'ordre dans lequel les clés ou les valeurs seront renvoyées.
Pourquoi l'impression de la carte est-elle hors service ?
Dans le code fourni, la carte des mois est définie avec des paires clé-valeur représentant les numéros de mois et les noms correspondants. Lors d'une itération sur la carte à l'aide d'une plage, l'ordre de la sortie imprimée est basé sur l'implémentation interne de la table de hachage, qui est généralement optimisée pour les performances plutôt que pour l'ordre.
Comment corriger l'ordre
Il existe plusieurs approches pour garantir l'ordre d'itération de la carte :
1. Utiliser une carte ordonnée :
Go n'a pas de type de carte ordonnée intégré, mais il existe des bibliothèques tierces qui fournissent cette fonctionnalité. L'une de ces bibliothèques est "github.com/golang/collections#OrderedMap."
import "github.com/golang/collections#OrderedMap" func main() { m := collections.NewOrderedMap() m.Set(1, "January") // ... for _, month := range m.Keys() { fmt.Println(month, "-", m.Get(month)) } }
2. Trier les clés de la carte :
Une autre option consiste à récupérer les clés de la carte, à les trier, puis à parcourir les clés triées pour accéder aux valeurs dans l'ordre.
func main() { keys := make([]int, 0, len(months)) for k := range months { keys = append(keys, k) } sort.Ints(keys) for _, k := range keys { fmt.Println(k, "-", months[k]) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!