切片
slice 本身是一个 描述符(header),不是数据本体。
什么意思?多个slice可能共享同一块底层数组。
go
type sliceHeader struct {
Data *T // 指向底层数组
Len int
Cap int
}slice = 指针 + 长度 + 容量,数据在 底层数组。
如果 append 添加的时候,Data 已经满了,就会重新创建一个 Data 用来存放数据。
slice 通过 make 创建
go
s := make([]string, 3)append
go
s = append(s, "d")copy
go
c := make([]string, len(s))
copy(c, s)切片
slice[low:high]go
l := s[2:5]
l = s[:5]
l = s[2:]