[golang] nil

在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读,不会报错,但是会出现意想不到的问题

 

 

你可能感兴趣的:(golang)