13
Bitte siehe unten meine KarteWie durchläuft man eine Karte in Golang in Reihenfolge?
var romanNumeralDict map[int]string = map[int]string{
1000: "M",
900 : "CM",
500 : "D",
400 : "CD",
100 : "C",
90 : "XC",
50 : "L",
40 : "XL",
10 : "X",
9 : "IX",
5 : "V",
4 : "IV",
1 : "I",
}
Ich suche jedoch in der Reihenfolge der Größe des Schlüssels
for k, v := range romanNumeralDict {
fmt.Println("k:", k, "v:", v)
}
durch diese Karte zu Schleife, druckt diese
k: 1000 v: M
k: 40 v: XL
k: 5 v: V
k: 4 v: IV
k: 900 v: CM
k: 500 v: D
k: 400 v: CD
k: 100 v: C
k: 90 v: XC
k: 50 v: L
k: 10 v: X
k: 9 v: IX
k: 1 v: I
aus Gibt es eine Möglichkeit, dass ich sie in der Reihenfolge der Größe des Schlüssels ausdrucken kann, so würde ich gerne diese Karte wie diese
durchlaufenk:1
K:4
K:5
K:9
k:10
etc ...
Vielen Dank für Ihre Hilfe!
Sie werden durch eine Schleife benötigen, fügen Sie die Paare auf einer Scheibe, und sortieren Sie die Scheibe. – Crisfole
Siehe http://stackoverflow.com/questions/12108215/golang-map-prints-out-of-order –
Laut der [spec] (http://golang.org/ref/spec#For_statements), "The Iterationsreihenfolge über Maps ist nicht spezifiziert und es ist nicht garantiert, dass sie von einer Iteration zur nächsten identisch sind. " Die Go-Autoren haben sogar die Iterationssequenz absichtlich randomisiert (d. H. Sie verwenden einen Zufallszahlengenerator, so dass jede Bereichsanweisung ein unterschiedliches ordr ergibt), so dass niemand in irgendeiner Weise von einer Interationsordnung abhängt. (Was passiert, wenn Sie davon abhängen, dass die Reihenfolge jedes Mal anders ist? Hm ...) – fuz