web-dev-qa-db-ja.com

地図のすべてのキーを繰り返す

Go言語マップ内のすべてのキーのリストを取得する方法はありますか?要素数はlen()で与えられますが、もし私が以下のようなマップを持っているなら:

m := map[string]string{ "key1":"val1", "key2":"val2" };

すべてのキーを反復処理する方法

261
Martin Redmond

https://play.golang.org/p/JGZ7mN0-U-

for k, v := range m { 
    fmt.Printf("key[%s] value[%s]\n", k, v)
}

または

for k := range m {
    fmt.Printf("key[%s] value[%s]\n", k, m[k])
}

forステートメントのGo言語仕様 は、最初の値がキー、2番目の変数が値ですが、存在する必要はないことを指定します。

445

これは、マップキーのsliceを取得する簡単な方法です。

// Return keys of the given map
func Keys(m map[string]interface{}) (keys []string) {
    for k := range m {
        keys = append(keys, k)
    }
    return keys
}

// use `Keys` func
func main() {
    m := map[string]interface{}{
        "foo": 1,
        "bar": true,
        "baz": "baz",
    }
    fmt.Println(Keys(m)) // [foo bar baz]
}
10
a8m

Go言語マップ内のすべてのキーのリストを取得する方法はありますか?

ks := reflect.ValueOf(m).MapKeys()

すべてのキーを反復処理する方法

受け入れられた答えを使ってください:

for k, _ := range m { ... }
7
Sridhar