- 通過數組生成切片
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))
}