Go 的nil 切片和空切片

491 阅读1分钟

只要在创建切片的时候,不作任何初始化就能声明一个值为nil的切片,即nil切片

//创建nil整型切片
var slice1 []int

image.png

利用初始化,通过初始化一个切片可以创建一个空切片;空切片底层数组长度为0,容量为0

//使用make创建空的整型切片
slice2 := make([]int, 0)

//使用切片字面量创建空的整型切片
slice3 := []int{}

image.png

通过反射比较nil切片和空切片,可以发现nil切片和空切片不相等,空切片和空切片相等

//创建nil整型切片
var slice1 []int
//使用make创建空的整型切片
slice2 := make([]int, 0)
//使用切片字面量创建空的整型切片
slice3 := []int{}

//nil切片和空切面不相等
fmt.Println(reflect.DeepEqual(slice1, slice2)) //false
fmt.Println(reflect.DeepEqual(slice1, slice3)) //false
fmt.Println(reflect.DeepEqual(slice2, slice3)) //true