- 通过数组生成切片
var arr = [5]int{1, 2, 3, 4, 5}
fmt.Printf("------%T\n", arr)
log.Println(arr[2:4])

- 通过make创建切片
// 创建slice
s2 := make([]int, 3) // 省略容量时,则长度和容量相等,都为3
s3 := make([]int, 3, 3) // 分配slice 3个容量,已使用3个长度
s4 := make([]int, 0, 3) // 分配给slice 3个容量,一个长度都未使用
log.Println(s2)
log.Println(s3)
log.Println(s4)
s3 = append(s3, 20)
log.Println(s3)
s4 = append(s4, 20)
log.Println(s4)
// 追加元素
s4 = append(s4, 30) // 追加一个元素
s4 = append(s4, 30,40) // 追加多个元素
s4 = append(s4, s4...) // 追加一个切片,注:追加切片时需要打散
注:go语言中为切片分配容量时,小于1024个长度时,则按照2的指数倍数扩容;超过1024个长度时,则按照一定的比例。
示例:
s := make([]int, 0)
for i:=0;i<2048;i++ {
s = append(s, i)
log.Println("len>>", len(s), "cap>>", cap(s))
}