Go言語でマップの順序を設定する方法
Goのmapは順序がなく、直接ソートすることはできません。ただし、mapのキーまたはキーと値のペアをスライスに抽出して、sortパッケージを使ってスライスをソートすることで、間接的にソートできます。
キーでソートされた map を示すサンプル コードは次のとおりです。
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{
"banana": 2,
"apple": 1,
"orange": 3,
}
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("%s: %d\n", k, m[k])
}
}
出力を表示します。
apple: 1
banana: 2
orange: 3
この例では、まず空の文字列スライス keys を作成し,次に for ループを使用してマップのキーを反復処理し,キーを keys スライスに追加します。その後,sort.Strings() 関数を使用してスライス keys をソートします。最後に,for ループを使用してソートされたスライスを反復処理し,ソートされた順序に従ってマップのキーと対応する値を出力します。
カスタム構造体のスライスを使い、sort.InterfaceインターフェースのLen(), Less(), Swap()メソッドを実装することで、マップのキーバリューペアをソートできます。具体的には、Go言語公式サイトのサンプルコードを参照してください: https://golang.org/pkg/sort/#example__sortKeys