数组与 Slice:长度固定和动态视图
数组长度是类型的一部分,[3]int 与 [4]int 是不同类型。业务代码更常使用 slice:它是对底层数组一段连续区域的描述,长度可变。
array := [3]int{1, 2, 3}
items := []int{1, 2, 3}
items = append(items, 4)
fmt.Println(len(items), cap(items))
slice 通过 len 获取当前元素数,通过 cap 获取从起始位置到底层数组末尾的容量。append 可能复用原数组,也可能分配新数组;不要假设 append 后两个 slice 一定共享或一定不共享底层数组。
切片共享底层数组
需要独立副本时使用 copy: