我使用`go version go1.17.2 linux/amd64` 编写了下面的程序探究Go slice的扩容机制:
```go
package main
import "fmt"
func main() {
s := []int{1, 2}
s = append(s, 3, 4, 5)
fmt.Printf("%d %d", len(s), cap(s))
fmt.Println()
s = append(s, 6, 7, 8)
fmt.Printf("%d %d", len(s), cap(s))
fmt.Println()
}
```
程序的输出是
![截屏2021-11-20 下午9.18.02.png](https://static.studygolang.com/211120/b5f8bdd61e624cf2127a7f7e39745330.png)
而如果是在1024的限度内指数增长应该是[5, 8], 但是这里的cap为什么是6?
谢谢 我明白了。刚刚还看到了这篇文章" [Go slice扩容深度分析](https://blog.csdn.net/weixin_34100227/article/details/91373911)" 讲的也很清楚。
#4
更多评论
如果
```
s := []int{1, 2}
s = append(s, 3)
s = append(s, 4)
s = append(s, 5)
```
这样得到的结果的cap是8
#1