Maps in Go : maintien de l'ordre et accès aux éléments
Dans Go, les cartes offrent un moyen dynamique et efficace de stocker des paires clé-valeur. Cependant, contrairement aux tableaux ou aux tranches, les cartes ne sont pas automatiquement triées. Cela peut conduire à une sortie qui apparaît dans le désordre lors d'une itération sur eux.
L'extrait de code suivant illustre ce comportement :
package main import ( "fmt" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ for no, month := range months { fmt.Print(no) fmt.Println("-" + month) } }
Lorsque vous exécutez ce code, vous remarquerez que la carte n'imprime pas dans l'ordre des touches (numéros 1 à 12). Au lieu de cela, il s'imprime dans un ordre apparemment aléatoire.
Solution : Contrôler l'ordre dans Maps
Pour obtenir une carte à imprimer dans un ordre spécifique, vous disposez de plusieurs options. peut envisager :
1. Utiliser un tableau :
Si l'ordre est critique, vous pouvez utiliser un tableau pour stocker des éléments de manière séquentielle. Les tableaux fournissent une structure de données ordonnée où vous pouvez accéder aux éléments directement à l'aide de leur index.
2. Clés de tri :
Si vous devez conserver la carte en tant que structure de données, vous pouvez obtenir une liste triée de clés à l'aide de la fonction sort.Ints, parcourir les clés triées et récupérer les valeurs correspondantes de la carte. .
Exemple de code :
package main import ( "fmt" "sort" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ var sortedKeys []int for key := range months { sortedKeys = append(sortedKeys, key) } sort.Ints(sortedKeys) fmt.Println("Printing in order:") for _, key := range sortedKeys { fmt.Printf("%d-%s", key, months[key]) } }
Dans ce code, le tableau sortedKeys est créé pour stocker les clés de la carte par ordre croissant. Nous parcourons ensuite les clés triées et accédons aux valeurs correspondantes à partir de la carte. Cela produit le résultat suivant :
Printing in order: 1-January2-Fabruary3-March4-April5-May6-June7-July8-August9-September10-October11-Novenber12-December
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!