更复杂的零值
在切片中,零值是空切片。
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]
那样进行操作。