天天看点

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