声明递归/多维映射

13
type Table struct {
    input map[string]map[string]
}

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

input["var1"]["var2"] = "something"

更新

type Table struct {
    input map[map[string]]
}

返回错误

 syntax error: unexpected ]
1个回答

23

您正在寻找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",
        },
    }

或者跟随您的示例;

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

这将打印出一些东西。


@clarkk 是的,可能还没准备好发布那个。我已经更新了。 - evanmcdonnal
4
顺便提一下,考虑到使用嵌套地图有些棘手/烦人(您需要为每个外部地图值make(map[string]string)或等效操作),也请考虑是否可以改用type key struct{key1, key2 string}; map[key] string来达到您的目的。 - Dave C
我试图避免为我的情况创建一个结构体,因为它只在单个路由上使用一次;不会在整个应用程序中使用。我宁愿不要在我的结构体中添加这样的东西,以免使其变得混乱。 - Kalnode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接