1. ホーム
  2. map

[解決済み] golangのマップを繰り返し処理する

2023-01-19 09:56:10

質問

タイプのマップを持っています。 map[string]interface{}

そして、最終的に以下のようなものを作成することができます (goyamlを使用してymlファイルからデシリアライズした後)。

mymap = map[foo:map[first: 1] boo: map[second: 2]]

このマップを反復処理するにはどうしたらよいでしょうか。私は以下を試しました。

for k, v := range mymap{
...
}

でも、エラーが出ます。

cannot range over mymap
typechecking loop involving for loop

助けてください。

どのように解決するのですか?

例えば

package main

import "fmt"

func main() {
    type Map1 map[string]interface{}
    type Map2 map[string]int
    m := Map1{"foo": Map2{"first": 1}, "boo": Map2{"second": 2}}
    //m = map[foo:map[first: 1] boo: map[second: 2]]
    fmt.Println("m:", m)
    for k, v := range m {
        fmt.Println("k:", k, "v:", v)
    }
}

出力します。

m: map[boo:map[second:2] foo:map[first:1]]
k: boo v: map[second:2]
k: foo v: map[first:1]