Karten in Go: Ordnung beibehalten und auf Elemente zugreifen
In Go bieten Karten eine dynamische und effiziente Möglichkeit, Schlüssel-Wert-Paare zu speichern. Im Gegensatz zu Arrays oder Slices sind Karten jedoch nicht von Natur aus sortiert. Dies kann dazu führen, dass die Ausgabe beim Durchlaufen nicht in der richtigen Reihenfolge erscheint.
Der folgende Codeausschnitt veranschaulicht dieses Verhalten:
package main import ( "fmt" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ for no, month := range months { fmt.Print(no) fmt.Println("-" + month) } }
Wenn Sie diesen Code ausführen, werden Sie feststellen, dass die Karte wird nicht in der Reihenfolge der Tasten (Nummern 1 bis 12) gedruckt. Stattdessen wird in einer scheinbar zufälligen Reihenfolge gedruckt.
Lösung: Reihenfolge in Karten steuern
Um eine Karte in einer bestimmten Reihenfolge zu drucken, stehen Ihnen mehrere Optionen zur Verfügung kann berücksichtigen:
1. Verwenden Sie ein Array:
Wenn die Reihenfolge entscheidend ist, können Sie ein Array verwenden, um Elemente nacheinander zu speichern. Arrays bieten eine geordnete Datenstruktur, in der Sie über ihren Index direkt auf Elemente zugreifen können.
2. Schlüssel sortieren:
Wenn Sie die Karte als Datenstruktur beibehalten müssen, können Sie mit der Funktion sort.Ints eine sortierte Liste von Schlüsseln abrufen, über die sortierten Schlüssel iterieren und die entsprechenden Werte aus der Karte abrufen .
Beispielcode:
package main import ( "fmt" "sort" ) type monthsType struct { no int text string } var months = map[int]string{ 1:"January", 2:"Fabruary", 3:"March", 4:"April", 5:"May", 6:"June", 7:"July", 8:"August", 9:"September", 10:"October", 11:"Novenber", 12:"December", } func main(){ var sortedKeys []int for key := range months { sortedKeys = append(sortedKeys, key) } sort.Ints(sortedKeys) fmt.Println("Printing in order:") for _, key := range sortedKeys { fmt.Printf("%d-%s", key, months[key]) } }
In diesem Code wird das sortedKeys-Array erstellt um die Schlüssel der Karte in aufsteigender Reihenfolge zu speichern. Anschließend iterieren wir über die sortierten Schlüssel und greifen auf die entsprechenden Werte aus der Karte zu. Dies erzeugt die folgende Ausgabe:
Printing in order: 1-January2-Fabruary3-March4-April5-May6-June7-July8-August9-September10-October11-Novenber12-December
Das obige ist der detaillierte Inhalt vonWie kann eine geordnete Ausgabe beim Durchlaufen von Go-Maps gewährleistet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!