Golang中nil map 和空 map 的区别是什么?
在 Go 语言中,nil
map 和空 map 是两种不同的概念:
1. nil map:
nil
map 是一个未初始化的 map,其值为 nil
。你不能向 nil
map 添加任何元素,否则会引发运行时错误(panic)。但是,你可以从 nil
map 中获取元素,这不会引发运行时错误,但总是返回元素类型的零值。
var m map[string]int // m 是一个 nil map
m["key"] = 1 // 运行时错误:panic: assignment to entry in nil map
2. 空 map:
空 map 是一个已经初始化但没有包含任何元素的 map。你可以向空 map 添加元素,也可以从空 map 中获取元素。
m := make(map[string]int) // m 是一个空 map
m["key"] = 1 // 正常运行,向空 map 中添加元素
在这个例子中,我们首先使用 make
函数创建了一个空 map,然后向这个空 map 中添加了一个元素。这是完全合法的,不会引发任何错误。
总的来说,主要区别在于你是否可以向 map 中添加元素:你不能向 nil
map 添加元素,但可以向空 map 添加元素。