„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Hängt die Go Map-Iterationsreihenfolge von der Reihenfolge der Schlüsseleinfügungen ab?

Hängt die Go Map-Iterationsreihenfolge von der Reihenfolge der Schlüsseleinfügungen ab?

Veröffentlicht am 14.01.2025
Durchsuche:248

Does Go Map Iteration Order Depend on Key Insertion Order?

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.

Neuestes Tutorial Mehr>

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