栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang的嵌套地图

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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上尝试一下。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568918.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号