最近使用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))
}