Maison > développement back-end > Golang > le corps du texte

Pourquoi la modification du formatage de la valeur d'une Go Map affecte-t-elle l'ordre de sortie de ses clés ?

Patricia Arquette
Libérer: 2024-11-26 19:00:13
original
769 Les gens l'ont consulté

Why Does Changing the Formatting of a Go Map's Value Affect the Output Order of its Keys?

Pourquoi l'ordre d'attribution des touches de carte affecte-t-il la sortie dans Go ?

Étant donné le code Go :

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

Lorsque nous exécutons ce code, il affichera :

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

Cependant, si nous déplaçons le bouclé droit accolade dans la déclaration du sommet de test quatre espaces vers la gauche, la sortie deviendra :

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

Cette modification apparemment mineure affecte l'ordre des clés de carte dans la sortie car "l'ordre" de la carte dépend de la fonction de hachage utilisée. Go utilise une fonction de hachage aléatoire pour empêcher les attaques par déni de service basées sur des collisions de hachage. Par conséquent, l'ordre de la carte n'est pas garanti et les modifications apportées aux paires clé-valeur peuvent modifier cet ordre.

La spécification de Go définit une carte comme un groupe non ordonné d'éléments avec des clés uniques. Il ne fournit aucune garantie d’une commande spécifique. Cette conception permet des optimisations qui pourraient potentiellement changer l'ordre des touches de carte sans aucune modification du code de l'utilisateur. Par conséquent, il n'est pas judicieux de se fier à l'ordre des touches de mappage dans vos applications.

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