嵌套Map的赋值问题

up_xwzhou · 2020-07-27 16:54:06 · 1850 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-07-27 16:54:06 的主题,其中的信息可能已经有所发展或是发生改变。

testMap := make(map[string]interface{})

使用Golang 空接口的特性定义了一个多层嵌套的Map,但是在赋值的时候遇到了报错,赋值语句如下:

testMap["Level1"].(map[interface{}]interface{})["level2"].(map[interface{}]interface{})["level3"] = "value"

报错的内容为:“interface{} is nil, not map[interface{}] interface{}"

interface{} 不是应该可以接受任意类型的参数吗?为什么我不可以将强制转换后的(map[interface{}]interface{}) 传入到上一层呢?

目前看到的资料说,map 的每一层都应该使用make 来构建,如果不想使用任何中间变量来对多层嵌套map进行赋值应该如何书写赋值语句呢?

敬请各位赐教~


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1850 次点击  
加入收藏 微博
1 回复  |  直到 2020-07-29 16:58:56
_Aiden_
_Aiden_ · #1 · 5年之前

你应该这样写: testMap := make(map[string]interface{})

testMap["Level1"] = make(map[interface{}]interface{})

testMap["Level1"].(map[interface{}]interface{})["level2"] = make(map[interface{}]interface{})

testMap["Level1"].(map[interface{}]interface{})["level2"].(map[interface{}]interface{})["level3"] = "value"

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传