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 
每次都是扩容了四分之一左右 

发表评论

后才能评论