声明递归/多维映射

huangapple go评论82阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2015年4月15日 05:48:59
  • 转载请务必保留本文链接:https://go.coder-hub.com/29637995.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定