package main
import "fmt"
func main() {
sl := make([]int, 0, 10)
appendFn := func(s []int) {
// 值传递, s 并不是 sl。
// 但数组是引用类型, 所以可以修改底层数组
fmt.Println("s ptr(old):", s) // []
s = append(s, 10, 20, 30)
fmt.Println("s ptr(new):", s) // [10,20,30]
}
fmt.Println(sl) // []
appendFn(sl)
fmt.Println(sl) // []
// 这里要注意, 并不是取的 sl ,而是底层数组新创建的 slice
fmt.Println(sl[:5]) // [10,20,30,0,0]
// 等价于
sl1 := sl[:5]
fmt.Println(sl1) // [10,20,30,0,0]
}