"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2025-01-14
Parcourir:415

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)
}

Il affiche :

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

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

m["test"] = Vertex{
    12.0, 100,
}

Modifie la sortie en :

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

Explication :

L'"ordre" de la carte dans Go dépend de la fonction de hachage aléatoire utilisée pour prévenir 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3