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
Barbara Streisandoriginal
2024-11-22 09:11:11494parcourir

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 génère :

{40.68433 74.39967}

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

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

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 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!

Déclaration:
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