Maison > développement back-end > Golang > Comment garantir une sortie ordonnée lors d'une itération sur des cartes Go ?

Comment garantir une sortie ordonnée lors d'une itération sur des cartes Go ?

Patricia Arquette
Libérer: 2024-11-28 01:16:15
original
674 Les gens l'ont consulté

How to Guarantee Ordered Output When Iterating Over Go Maps?

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)
    }
}
Copier après la connexion

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])
    }
}
Copier après la connexion

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
Copier après la connexion

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