Warum wirkt sich die Änderung der Formatierung des Werts einer Go-Map auf die Ausgabereihenfolge ihrer Schlüssel aus?

Patricia Arquette
Freigeben: 2024-11-26 19:00:13
Original
769 Leute haben es durchsucht

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

Warum wirkt sich die Zuweisungsreihenfolge der Kartenschlüssel auf die Ausgabe in Go aus?

Angesichts des Go-Codes:

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)
}
Nach dem Login kopieren

Wenn wir diesen Code ausführen, wird Folgendes ausgegeben:

{40.68433 74.39967}
map[Bell Labs:{40.68433 74.39967} test:{12 100}]
Nach dem Login kopieren

Wenn wir uns jedoch nach rechts bewegen geschweifte Klammer in der Testscheitelpunktdeklaration vier Leerzeichen weiter links, ändert sich die Ausgabe zu:

{40.68433 74.39967}
map[test:{12 100} Bell Labs:{40.68433 74.39967}]
Nach dem Login kopieren

Diese scheinbar geringfügige Änderung wirkt sich auf die Reihenfolge der Kartenschlüssel in der Ausgabe aus, da die „Reihenfolge“ der Karte abhängig ist von der verwendeten Hash-Funktion. Go verwendet eine zufällige Hash-Funktion, um Denial-of-Service-Angriffe basierend auf Hash-Kollisionen zu verhindern. Folglich ist die Reihenfolge der Karte nicht garantiert und Änderungen an den Schlüssel-Wert-Paaren können diese Reihenfolge ändern.

Die Spezifikation von Go definiert eine Karte als eine ungeordnete Gruppe von Elementen mit eindeutigen Schlüsseln. Es besteht keine Gewähr für eine bestimmte Bestellung. Dieses Design ermöglicht Optimierungen, die möglicherweise die Reihenfolge der Kartenschlüssel ändern könnten, ohne dass der Benutzercode geändert werden muss. Daher ist es unklug, sich in Ihren Anwendungen auf die Reihenfolge der Kartenschlüssel zu verlassen.

Das obige ist der detaillierte Inhalt vonWarum wirkt sich die Änderung der Formatierung des Werts einer Go-Map auf die Ausgabereihenfolge ihrer Schlüssel aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage