golang map类型转换遇到的坑
dok8s · · 4568 次点击 · · 开始浏览map想必大家都很熟悉了,下面简单记录一下今天开发遇到的坑。
基本概念>字典(Map)
字典是一组无序的,键值对的集合。字典也叫做关联数组,因为数组通过索引来查找元素,而字典通过键来查找元素。当然,很显然的,字典的键是不能重复的。如果试图赋值给同一个键,后赋值的值将覆盖前面赋值的值。
例如:
x := make(map[string]interface{})
y := make(map[string]interface{})
y["name"] = "echo"
y["ege"] = 28
x["str"] = y
如果我将以上的x返回,输出打印
for k,v := range x["str"] {
utils.display(v["name"])
}
执行后将报错,因为y,x定义的类型不同,正确x值的类型应该为y的类型,否则将报错类型为interface{}无法遍历。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
map想必大家都很熟悉了,下面简单记录一下今天开发遇到的坑。
基本概念>字典(Map)
字典是一组无序的,键值对的集合。字典也叫做关联数组,因为数组通过索引来查找元素,而字典通过键来查找元素。当然,很显然的,字典的键是不能重复的。如果试图赋值给同一个键,后赋值的值将覆盖前面赋值的值。
例如:
x := make(map[string]interface{})
y := make(map[string]interface{})
y["name"] = "echo"
y["ege"] = 28
x["str"] = y
如果我将以上的x返回,输出打印
for k,v := range x["str"] {
utils.display(v["name"])
}
执行后将报错,因为y,x定义的类型不同,正确x值的类型应该为y的类型,否则将报错类型为interface{}无法遍历。