マップの走査プロセスは、for range ループを使用して完了します。コードは次のとおりです。
scene := make(map[string]int)
scene["route"] = 66
scene["brazil"] = 4
scene["china"] = 960
for k, v := range scene {
fmt.Println(k, v)
}
シーン:= make(map[string]int)
scene ["route"] = 66
scene ["brazil"] = 4
scene ["china"] = 960
for k、v:= range scene {
fmt.Println(k、v)
}
トラバースは、Go 言語の多くのオブジェクトと似ています。for range 構文を直接使用できます。トラバースするときに、キーと値の両方を取得できます。値のみをトラバースする場合は、次の形式を使用できます:
for _, v := range scene {
// コードの処理
}
不要なキーを_
から匿名変数に変更します。
注: 出力要素が走査される順序は、フィル順序とは関係がありません。また、マップが走査されたときに、望ましい順序で結果を返すことは期待できません。
走査結果を特定の順序で取得する必要がある場合、最初に並べ替えるのが正しい方法です。コードは次のとおりです。
scene := make(map[string]int)
// マップデータを準備する
scene["route"] = 66
scene["brazil"] = 4
scene["china"] = 960
// マップデータを保存するスライスを宣言する
var sceneList []string
// マップデータをスライスにコピーする
for k := range scene {
sceneList = append(sceneList, k)
}
// スライスをソートする
sort.Strings(sceneList)
// 出力する
fmt.Println(sceneList)
コード出力は次のとおりです。
[brazil china route]
コードの説明は次のとおりです。
- 行 1 はマップ インスタンスを作成します。キーは文字列、値は整数です。
- 行 4 ~ 6 では、3 つのキーと値のペアをマップに書き込みます。
- 9 行目で、sceneList が、マップ内のすべての要素をバッファリングして並べ替えるための文字列スライスとして宣言されています。
- 12 行目は、マップ内の要素のキーを走査し、それらをスライスに配置します。
- 17 行目では、sceneList 文字列スライスをソートしており、ソート時に sceneList が変更されます。
- 行 20 は、ソートされたマップのキーを出力します。
sort.Strings の役割は、受信した文字列スライスを文字列文字の昇順に並べ替えることです。sort インターフェイスの使用方法については、次の章で紹介します。
「 Go 言語はマップを走査します (マップ内の各キーと値のペアにアクセスします)。」についてわかりやすく解説!絶対に観るべきベスト2動画
キーと値のペアを使用したマップ – Golang を学ぶ #8
How to retrieve value for a key from a map in different ways in Golang 1.20