跳到主要内容

slice

基本概念

概念

  • slice: 指向底层数组一段连续元素的描述符;
  • 长度: 当前可访问元素数量;
  • 容量: 从起始位置到底层数组末尾的可扩展空间;

语法格式

func main() {
var zero []int // nil slice;len 和 cap 均为 0
s := []int{1, 2, 3} // 指向底层数组的一段连续元素
println(len(zero), cap(zero), len(s), cap(s))
}

创建方式

func main() {
a := []int{1, 2, 3} // slice literal
b := make([]int, 3) // 长度为 3,容量为 3
c := make([]int, 0, 8) // 长度为 0,容量为 8
println(len(a), len(b), cap(c))
}

nil 和 empty slice

概念

  • nil slice: 值为 nil,长度和容量为 0;
  • empty slice: 值非 nil,长度为 0;
  • append: nil slice 和 empty slice 均可直接追加元素;

语法格式

func main() {
var nilSlice []int
emptySlice := []int{}
println(nilSlice == nil) // true
println(emptySlice == nil) // false
}

状态对比

状态是否为 nillencap可直接 append
nil slice00
empty slice0由创建方式决定