要するに、マップのタイプに関係なく、ソートされたキーの順序でマップをトラバースするにはどうすればよいですか?
関連する質問をいくつか見つけました。最も近いreflect
質問は、モジュールに依存しないと実行できないことを示唆しています。この理解は正しいでしょうか?
キーのソート順で異なるタイプの 2 つのマップをトラバースする次の Go コードを考えてみましょう。
mapOne := map[int]string {
1: "a",
2: "b",
3: "c",
}
keysOne := make([]int, 0, len(mapOne))
for key, _ := range mapOne {
keysOne = append(keysOne, key)
}
sort.Ints(keysOne)
for _, key := range keysOne {
value := mapOne[key]
fmt.Println(key, value)
}
mapTwo := map[string]int {
"a": 1,
"b": 2,
"c": 3,
}
keysTwo := make([]string, 0, len(mapTwo))
for key, _ := range mapTwo {
keysTwo = append(keysTwo, key)
}
sort.Strings(keysTwo)
for _, key := range keysTwo {
value := mapTwo[key]
fmt.Println(key, value)
}
キーを抽出して並べ替えるロジックは、2 つの異なるマップ タイプで複製されます。このロジックを除外して重複を避ける方法はありますか?
メソッドを提供するためのインターフェイスを作成しようとして行き詰まりましたSortedKeys
。特に、 の戻り値の型SortedKeys
はマップの型に依存していて、それを Go で表現する方法がわかりません。