英文:
Declare recursive/multidimensional map
问题
如何声明一个多维或递归的映射?
type Table struct {
input map[string]map[string]string
}
如上所示,您可以使用map[string]map[string]string
来声明一个多维映射。在这个例子中,input
是一个映射,其中的每个键都对应另一个映射,第二个映射的键是字符串,值也是字符串。
在更新的代码中,您尝试使用map[map[string]]
来声明映射,但是这会导致语法错误。正确的语法应该是map[string]map[string]string
,其中第一个string
表示第一层映射的键类型,第二个string
表示第二层映射的键类型,最后的string
表示值类型。
英文:
type Table struct {
input map[string]map[string]
}
How to declare a multidimensional or recursive map?
input["var1"]["var2"] = "something"
#update
type Table struct {
input map[map[string]]
}
returns error
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"])
}
这将打印出 "something"。
英文:
You're looking for map[string]map[string]string
. The problem with your example is it's missing the type of the value in the inner map. Here's an example of how to init such a structure;
m := map[string]map[string]string{
"a": map[string]string{
"1":"A",
"2": "B",
},
"b": map[string]string{
"1": "C",
"2": "D",
},
}
Or following your example;
func main() {
m := map[string]map[string]string{}
m["var1"] = map[string]string{}
m["var1"]["var2"] = "something"
fmt.Println(m["var1"]["var2"])
}
That prints something.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论