go-map赋值前要先初始化:assignment to entry in nil map

注意这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以下面的赋值会出现错误:

错误用法

1
2
test := make(map[string]map[int]int)
test["go"][0] = 0 // error

正确用法

1
2
3
4

test := make(map[string]map[int]int)
test["go"] = make(map[int]int)
test["go"][0] = 0

常用用法

1
2
3
4
5
test := make(map[string]map[int]int)
if test["go"] == nil {
test["go"] = make(map[int]int)
}
test["go"][0] = 0