Maison > développement back-end > Golang > L'ordre d'itération de Go Map dépend-il de l'ordre d'insertion des clés ?

L'ordre d'itération de Go Map dépend-il de l'ordre d'insertion des clés ?

Barbara Streisand
Libérer: 2024-11-22 09:11:11
original
482 Les gens l'ont consulté

Does Go Map Iteration Order Depend on Key Insertion Order?

Ordre d'affectation dans Go Maps

Considérant le code Go suivant :

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}
Copier après la connexion

Il génère :

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]
Copier après la connexion

Modifier la déclaration du sommet de test en déplaçant le "}" droit de 4 espaces, comme suit :

m["test"] = Vertex{
    12.0, 100,
}
Copier après la connexion

Modifie la sortie en :

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]
Copier après la connexion

Explication :

L'"ordre" de la carte dans Go dépend du hachage aléatoire fonction utilisée pour empêcher les attaques par déni de service. Selon le suivi des problèmes Go (http://code.google.com/p/go/issues/detail?id=2630), l'ordre des cartes n'est pas garanti selon les spécifications.

Selon les spécifications , une carte est un groupe non ordonné d'éléments avec des clés uniques. Une implémentation future pourrait changer l'ordre d'une carte sans la modifier dans votre code. Par conséquent, s’appuyer sur un ordre spécifique des cartes n’est pas une pratique recommandée dans Go.

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