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 添加元素。

发表评论

后才能评论