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