声明递归/多维地图

cla*_*rkk 5 go

type Table struct {
    input map[string]map[string]
}
Run Code Online (Sandbox Code Playgroud)

如何声明多维或递归映射?

input["var1"]["var2"] = "something"
Run Code Online (Sandbox Code Playgroud)

更新

type Table struct {
    input map[map[string]]
}
Run Code Online (Sandbox Code Playgroud)

返回错误

 syntax error: unexpected ]
Run Code Online (Sandbox Code Playgroud)

eva*_*nal 9

你在找map[string]map[string]string.您的示例的问题是它缺少内部映射中值的类型.这是一个如何初始化这种结构的例子;

m := map[string]map[string]string{
        "a": map[string]string{
            "1":"A",
            "2": "B",
        },
        "b": map[string]string{
            "1": "C",
            "2": "D",
        },
    }
Run Code Online (Sandbox Code Playgroud)

或者按照你的例子;

func main() {
        m := map[string]map[string]string{}
        m["var1"] = map[string]string{}
        m["var1"]["var2"] = "something"
        fmt.Println(m["var1"]["var2"])
}
Run Code Online (Sandbox Code Playgroud)

打印出来的东西.

  • @clarkk BTW,鉴于使用这样的嵌套映射(你需要`make(map [string] string)`或者等等.每个外部映射值)有点棘手/烦恼也考虑是否可以使用`type key struct {key1,key2 string}; map [key] string`用于您的目的. (2认同)