GO 使用嵌套map应该多次分配空间
demo
package main
import (
"fmt"
)
func main() {
// 初始化一个map
var tmp map[int64]interface{}
//tmp[1] = "abc" // panic:assignment to entry in nil map ;必须使用make分配空间
tmp = make(map[int64]interface{})
tmp[1] = "123"
// 一般不使用上面复杂写法,直接声明赋值
var m1 = make(map[int64]interface{})
m2 := make(map[int64]interface{}) // uber go语言编码规范 推荐使用局部变量写法
m3 := map[int64]interface{}{} // 字面量直接赋值
// 使用嵌套map
hs := make(map[int64]map[string]interface{})
//hs[1]["name"] = "张三" // 这么做会panic, 因为 make() 只为最外部的map分配了空间
// 正确写法1
//hs[1] = make(map[string]interface{})
//hs[1]["name"] = "张三"
// 正确写法2
hs[1] = map[string]interface{}{}
hs[1]["name"] = "张三"
// ...
fmt.Println(m1, m2, m3, hs)
}
标签:tmp,map,嵌套,hs,make,interface,int64,GO
From: https://www.cnblogs.com/dibtp/p/17008225.html