キーと値のペアの順序を逆にすることができる Python の辞書とは異なり、golang のマップは順序付けされていないことがわかっています。それでは、マップの順序付けされた出力を手動で実装してみましょう。原理は実際には非常に簡単です。
package main
import (
"fmt"
"sort"
)
func main() {
map1 := make(map[int]string, 5)
map1[1] = "www.topgoer.com"
map1[2] = "rpc.topgoer.com"
map1[5] = "ceshi"
map1[3] = "xiaohong"
map1[4] = "xiaohuang"
sli := []int{}
for k, _ := range map1 {
sli = append(sli, k)
}
sort.Ints(sli)
for i := 0; i < len(map1); i++ {
fmt.Println(map1[sli[i]])
}
}
上記のコードは、マップを定義して初期化し、空のスライス sli を定義し、マップを走査し、マップのキーをスライス sli に格納し、sli をソートして順序付けされたキーを取得します。スライススライス. キーを取り出すだけです。
ここにちょっとしたトリックがあります:
ここでは、マップを巡回してキーのみを取り出していますが、値は取り出していません。これは、キーがわかれば、マップに従って値を直接取得できるため、効率が向上するためです。少し!
ところで、スライスを定義する 3 つの方法を確認してみましょう。