Golang的嵌套地图

Golang的嵌套地图,第1张

Golang的嵌套地图

地图类型的零值为

nil
。尚未初始化。您无法在
nil
地图中存储值,这是运行时的恐慌。

在上一个示例中,您初始化了(外部)

data
映射,但是它没有条目。当您像那样对它进行索引时
data["a"]
,由于尚无
"a"
键输入,因此对其进行索引将返回
nil
用于地图的值类型的零值。因此,尝试分配给
data["a"]["w"]
运行时恐慌。

您必须先初始化地图,然后再在其中存储元素,例如:

var data = map[string]map[string]string{}data["a"] = map[string]string{}data["b"] = make(map[string]string)data["c"] = make(map[string]string)data["a"]["w"] = "x"data["b"]["w"] = "x"data["c"]["w"] = "x"fmt.Println(data)

输出(在Go Playground上尝试):

map[a:map[w:x] b:map[w:x] c:map[w:x]]

请注意,当您声明映射类型的变量并使用复合文字对其进行初始化时(如所述

vardata = map[string]string{}
),这也算作初始化。

请注意,您还可以使用复合文字来初始化嵌套地图:

var data = map[string]map[string]string{    "a": map[string]string{},    "b": map[string]string{},    "c": map[string]string{},}data["a"]["w"] = "x"data["b"]["w"] = "x"data["c"]["w"] = "x"fmt.Println(data)

输出是相同的。在Go Playground上尝试一下。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560195.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存