13
proszę zobaczyć poniżej mojej mapieJak iterować mapę w języku golang w celu?
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",
}
szukam do pętli tej mapy w kolejności wielkości klucza
for k, v := range romanNumeralDict {
fmt.Println("k:", k, "v:", v)
}
Jednak ten wypisuje
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
Czy istnieje sposób, że mogę je wydrukować w kolejności wielkości klucza, więc chciałbym przeglądać tę mapę w ten sposób:
k:1
K:4
K:5
K:9
k:10
etc ...
Dziękuję bardzo za pomoc!
Musisz pętli, dodać pary do plasterka i sortowania plaster. – Crisfole
Zobacz http://stackoverflow.com/questions/12108215/golang-map-prints-out-of-order –
Zgodnie z [spec] (http://golang.org/ref/spec#For_statements), "The kolejność iteracji na mapach nie jest określona i nie ma gwarancji, że będzie taka sama od jednej iteracji do następnej. " Autorzy Go nawet celowo losowali sekwencję iteracji (to znaczy używają generatora liczb losowych, tak aby każde stwierdzenie zakresu dawało wyraźny porządek), więc nikt niesłusznie nie zależy od jakiejkolwiek kolejności interakcji. (Co się stanie, jeśli będziesz zależał od tego, że kolejność będzie inna za każdym razem? Hm ...) – fuz