https://tour.go-zh.org/moretypes/15
```
package main
import "fmt"
func main() {
var s []int
printSlice(s)
// 1. 添加一个空切片
s = append(s, 0)
printSlice(s)
// 2. 这个切片会按需增长
s = append(s, 1)
printSlice(s)
// 3. 可以一次性添加多个元素
s = append(s, 2, 3, 4)
printSlice(s)
}
func printSlice(s []int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}
```
运行结果为
```
len=0 cap=0 []
len=1 cap=2 [0]
len=2 cap=2 [0 1]
len=5 cap=8 [0 1 2 3 4]
```
这个的结果中,1 的 `cap(s)` 的结果为什么是2?还有3的为什么是8 呢?
更多评论
1 s没有初始化,会报空指针异常吧.
2 去真正执行一下吧,go 1.9的执行结果如下
len=0 cap=0 []
len=1 cap=1 [0]
len=2 cap=2 [0 1]
len=5 cap=6 [0 1 2 3 4]
#1