3.2 零值nil

nil 标志符用于表示interface、函数、maps、slices、channels、error、指针等的“零值”。如果你不指定变量的类型,编译器将无法编译你的代码,因为它猜不出具体的类型。

package main
func main() {  
    var x = nil // 错误
    _ = x
}

在一个 nil 的slice中添加元素是没问题的,但对一个map做同样的事将会生成一个运行时的panic:

package main
func main() {  
    var m map[string]int
    m["one"] = 1 //error
}

字符串不会为 nil。

这对于经常使用 nil 分配字符串变量的开发者而言是个需要注意的地方。

var str string  = "" // ""是字符串的零值

根据前面的介绍,其实这样写和上面的效果一样:

var str string