Zuweisungsreihenfolge in Go Maps
Unter Berücksichtigung des folgenden 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) }
Es wird ausgegeben:
{40.68433 74.39967} map[Bell Labs:{40.68433 74.39967} test:{12 100}]
Ändern der Testscheitelpunktdeklaration durch Verschieben des rechten „}“ um 4 Leerzeichen wie folgt:
m["test"] = Vertex{ 12.0, 100, }
Ändert die Ausgabe in:
{40.68433 74.39967} map[test:{12 100} Bell Labs:{40.68433 74.39967}]
Erläuterung:
Map „Reihenfolge“ in Go hängt von der verwendeten randomisierten Hash-Funktion ab Verhindern Sie Denial-of-Service-Angriffe. Laut Go Issue Tracker (http://code.google.com/p/go/issues/detail?id=2630) ist die Kartenreihenfolge gemäß der Spezifikation nicht garantiert.
Gemäß der Spezifikation Eine Karte ist eine ungeordnete Gruppe von Elementen mit eindeutigen Schlüsseln. Eine zukünftige Implementierung könnte die Reihenfolge einer Karte ändern, ohne sie in Ihrem Code zu ändern. Daher ist es in Go nicht empfehlenswert, sich auf eine bestimmte Kartenreihenfolge zu verlassen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3