1. 零值
零值是指当你声明变量(分配内存)并未显式初始化时,始终为你的变量自动设置一个默认初始值的策略。
对于值类型:布尔类型为 false, 数值类型为 0,字符串为 "",数组和结构会递归初始化其元素或字段,即其初始值取决于元素或字段。
对于引用类型: 均为 nil,包括指针 pointer,函数 function,接口 interface,切片 slice,管道 channel,映射 map。
因为切片是引用类型的,所以其零值也是 nil:例如下列代码
package main
import "fmt"
import "strings"
func main(){
var s []string
fmt.Println(s, len(s), cap(s)) // [] 0 0
fmt.Println(s == nil) // true
s = append(s, "Hello")
s = append(s, "World")
fmt.Println(strings.Join(s, ", ")) // Hello, World
}
具体内容参考:
https://zhuanlan.zhihu.com/p/295048056