天天看點

Go 建立切片(slice)

  • 通過數組生成切片
var arr = [5]int{1, 2, 3, 4, 5}
	fmt.Printf("------%T\n", arr)

	log.Println(arr[2:4])
           
Go 建立切片(slice)
  • 通過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 建立切片(slice)

注: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))
}