版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 https://blog.csdn.net/stpeace/article/details/82050482
在C++ STL中,只有empty map, 没有NULL map, 但是, 在go中,既有empty map, 又有nil map. 为什么要怎么搞? 在我看来, 完全没有必要搞个nil map, 所有的map应该都是直接自动初始化为empty map. 既然go设计者这个搞了, 自然有他们的理由, 我不认同, 但没有什么卵用。
来看看go圣经怎么说:The zero value for a map type is nil, that is, a reference to no hash table at all. 这个nil map是不能添加元素的, 必须进行初始化才可以。 既然如此, 何不默认初始化为empty map呢? 不接!
对C++的NULL进行操作,总是让人提醒吊胆, 那么在nil map上操作, 会怎样呢? 继续看go圣经: Most operations on maps, including lookup, delete, len, and range loops, are safe to perform on a nil map reference, since it behaves like an emtpy map. But storing to a nil map cause a panic.
好了, 不多说。