更复杂的零值

在切片中,零值是空切片。

var myIntSlice []int    // [] - an empty slice

使用 make 创建一个填充了值的切片,切片中创建的任何值都将设置为切片类型的零值。例如:

myIntSlice := make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println(myIntSlice[3])
// Prints 0

在这个例子中,myIntSlice 是一个 int 切片,包含 5 个元素,它们都是 0,因为这是 int 类型的零值。

你还可以使用 new 创建切片,这将创建指向切片的指针。

myIntSlice := new([]int)        // &[] - a pointer to an empty slice
*myIntSlice = make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println((*myIntSlice)[3])
// Prints 0

注意: 切片指针不支持索引,因此你无法使用 myIntSlice[3] 访问这些值,而是需要像 (*myIntSlice)[3] 那样进行操作。