Maison > développement back-end > Golang > Pourquoi l'ordre des paires clé-valeur est-il imprévisible lors d'une itération sur des cartes Go ?

Pourquoi l'ordre des paires clé-valeur est-il imprévisible lors d'une itération sur des cartes Go ?

Linda Hamilton
Libérer: 2024-11-27 09:49:10
original
844 Les gens l'ont consulté

Why Is the Order of Key-Value Pairs Unpredictable When Iterating Over Go Maps?

Comprendre l'ordre des valeurs-clés dans Go Maps

Dans Go, les cartes sont des collections non ordonnées de paires clé-valeur. Lors d'une itération sur une carte à l'aide d'une boucle de plage, l'ordre dans lequel les clés et les valeurs sont renvoyées n'est pas prévisible. Ce comportement découle de l'implémentation interne des cartes, qui donne la priorité aux performances plutôt qu'à la préservation de l'ordre.

Raison de la sortie dans le désordre

Dans votre exemple, les mois de la carte contient des paires clé-valeur où les clés sont des entiers représentant les numéros de mois et les valeurs sont les noms de mois correspondants. Lorsque vous parcourez la carte à l'aide de la boucle de plage, le runtime Go imprime les paires clé-valeur en fonction de la façon dont la carte est organisée en mémoire. Cette organisation peut cependant varier d'une exécution à l'autre, entraînant une sortie dans le désordre.

Préservation de l'ordre

Si vous avez besoin de la valeur-clé paires à imprimer dans un ordre précis, vous avez deux options :

1. Utiliser un tableau

Un tableau est une structure de données qui maintient un ordre fixe de ses éléments. En utilisant un tableau de taille connue, vous pouvez définir explicitement l'ordre des paires clé-valeur. Voici un exemple de code :

var months [12]string
months[0] = "January"
months[1] = "Fabruary"
// ... Populate the rest of the array
Copier après la connexion

2. Trier les clés de la carte

Vous pouvez également trier les clés de la carte avant de parcourir la carte. Cela garantit que les paires clé-valeur sont imprimées dans l’ordre souhaité. Voici un exemple de code :

keys := make([]int, 0, len(months))
for key := range months {
  keys = append(keys, key)
}
sort.Ints(keys)

for _, key := range keys {
  fmt.Println(key, "-", months[key])
}
Copier après la connexion

En utilisant l'une ou l'autre de ces approches, vous pouvez contrôler l'ordre de sortie de la carte des mois.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal