最近使用golang切片长度与容量

根据以下得出切片长度就是实际数组的长度
容量计算方式为:切片初始长度 * 2n (n为追加总数 / 初始化切片容量)向上取整

package main

import "fmt"

func main() {
	//show[int]([]int{1, 2, 4, 4, 5, 6})
	//show[string]([]string{"张三", "李四", "王五"})
	a := []int{1, 2}
	fmt.Println(len(a)) // cap 2
	fmt.Println(cap(a)) // len 2
	a = append(a, 3)    // cap 4 len 3   cap 2*2
	a = append(a, 4)    // cap 4 len 4   cap 2*2
	a = append(a, 5)    // cap 8 len 5   cap 4*2
	fmt.Println(len(a))
	fmt.Println(cap(a))
	c := make([]int, 1, 3)
	fmt.Println(c)
	c = append(c, 1) // cap 3  len 2 定义的长度未占用完毕
	c = append(c, 1) // cap 3  len 3 定义长度已全部使用
	c = append(c, 1) // cap 6  len 4 3*2
	c = append(c, 1) // cap 6  len 5 3*2
	c = append(c, 1) // cap 6  len 6 3*2
	c = append(c, 1) // cap 12 len 7 6*2
	fmt.Println(c)
	fmt.Println(len(c))
	fmt.Println(cap(c))
}