在go中,如果只声明而没有赋值,则这个变量会被默认一个零值:
bool | false |
numbers | 0 |
string | "" |
points | nil |
slices | nil |
maps | nil |
不能向值为nil的变量赋值:
(1) 向nil empty赋值会报错:panic:assign to entry in nil map
其他操作如:for range遍历,if v,ok := map1[k];ok等不会报错
(2) 向nil slice赋值:panic: runtime error: index out of range
nil slice不能索引,其他操作如:for range遍历,append正常都没有问题
(3) 对nil的指针进行解引用,会引发panic: runtime error: invalid memory address or nil pointer dereference
(4) 对于一个结构体,如果只声明没有进行初始化,则结构体内的元素会为对应类型的零值
对于nil的struct进行struct.filed读,不会报错,但是会出现意想不到的问题