Golangでmapの全てのkeyを取得する方法
Golangには、map(連想配列)のkeyをまとめて取得し、配列に格納するためのピンポイントな関数がありません。
そのため、mapの全てのkeyを取得するには、forループ文でmapからkeyを取り出す処理を自身で実装する必要があります。
大まかな実装手順としては以下のとおりです。
- keyを格納する配列(スライス)を定義する
- for .. range文でmap(連想配列)からkeyを一つずつ上記で作成した配列に格納する
以下で具体的なコードを用いて解説します。
mapからkey一覧を取得するサンプルコード
以下のコードでは、personsというmap(連想配列)からkeyである人名を取り出し、1つの配列にまとめている処理を記述しています。
package main
import (
"fmt"
)
func main() {
persons := map[string]int{"田中": 20, "荒木": 16, "小島": 32, "大城": 28}
// personsの全部のkeyを取得する処理
var keys []string
for key := range persons {
keys = append(keys, key)
}
fmt.Println(keys) // [田中 荒木 小島 大城]
}
最終的に変数keysにはpersonsの全てのkeyが格納されることが分かると思います。
補足ですが、mapに対してfor文を使用した際に変数を一つだけにした場合、その変数にはmapのkeyが当てはまります。
for k := range 連想配列 { // 変数kにはmap(連想配列)のkeyが入る
}