Go 语言是如何实现切片扩容的
func main() {
arr := make([]int, 0)
for i := 0; i < 2000; i++ {
fmt.Println("len 为", len(arr), "cap 为", cap(arr))
arr = append(arr, i)
}
}
我们可以看下结果依次是
0,1,2,4,8,16,32,64,128,256,512,1024
但到了 1024 之后,就变成了1024,1280,1696,2304
每次都是扩容了四分之一左右