Die Reihenfolge der Schlüsselwerte in Go Maps verstehen
In Go sind Karten ungeordnete Sammlungen von Schlüsselwertpaaren. Beim Durchlaufen einer Karte mithilfe einer Bereichsschleife ist die Reihenfolge, in der die Schlüssel und Werte zurückgegeben werden, nicht vorhersehbar. Dieses Verhalten ist auf die interne Implementierung von Karten zurückzuführen, bei der die Leistung Vorrang vor der Beibehaltung der Reihenfolge hat.
Grund für die Ausgabe außerhalb der Reihenfolge
In Ihrem Beispiel die Kartenmonate enthält Schlüssel-Wert-Paare, wobei die Schlüssel ganze Zahlen sind, die Monatszahlen darstellen, und die Werte die entsprechenden Monatsnamen sind. Wenn Sie mithilfe der Bereichsschleife über die Karte iterieren, druckt die Go-Laufzeit die Schlüssel-Wert-Paare basierend auf der Art und Weise, wie die Karte im Speicher organisiert ist. Diese Organisation kann jedoch von einer Ausführung zur anderen variieren, was zu einer Ausgabe außerhalb der Reihenfolge führt.
Bewahrung der Ordnung
Wenn Sie den Schlüsselwert benötigen Damit Paare in einer bestimmten Reihenfolge gedruckt werden sollen, haben Sie zwei Möglichkeiten:
1. Verwenden Sie ein Array
Ein Array ist eine Datenstruktur, die eine feste Reihenfolge ihrer Elemente beibehält. Durch die Verwendung eines Arrays bekannter Größe können Sie die Reihenfolge der Schlüssel-Wert-Paare explizit festlegen. Hier ist ein Beispielcode:
var months [12]string months[0] = "January" months[1] = "Fabruary" // ... Populate the rest of the array
2. Sortieren Sie die Kartenschlüssel
Sie können die Kartenschlüssel auch sortieren, bevor Sie die Karte durchlaufen. Dadurch wird sichergestellt, dass die Schlüssel-Wert-Paare in der gewünschten Reihenfolge gedruckt werden. Hier ist ein Beispielcode:
keys := make([]int, 0, len(months)) for key := range months { keys = append(keys, key) } sort.Ints(keys) for _, key := range keys { fmt.Println(key, "-", months[key]) }
Durch die Verwendung eines dieser Ansätze können Sie die Reihenfolge der Ausgabe der Kartenmonate steuern.
Das obige ist der detaillierte Inhalt vonWarum ist die Reihenfolge der Schlüssel-Wert-Paare bei der Iteration über Go-Maps unvorhersehbar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!