切片传递问题
package main
import "fmt"
func main() {
// 声明一个长度为3 容量为5 的切片
// 切片 引用传递
arr := make([]int, 3, 5)
// 打印地址
fmt.Printf("Before main: %p, len: %d, cap: %d\n", arr, len(arr), cap(arr))
addSlice(arr)
fmt.Printf("After main: %p, len: %d, cap: %d\n", arr, len(arr), cap(arr))
for i := 0; i < len(arr); i++ {
println(arr[i])
}
}
func addSlice(arr []int) {
fmt.Printf("Before append: %p, len: %d, cap: %d\n", arr, len(arr), cap(arr))
// 修改第一个元素值
arr[0] = 100
// 追加一个元素, 切片容量足够,不需要扩容
arr = append(arr, 1)
fmt.Printf("After append: %p, len: %d, cap: %d\n", arr, len(arr), cap(arr))
}
执行结果:
疑惑点:
切片是引用传递,为啥main()中打切片,没有追加的元素,并且切片地址没有发生变化,求大佬解答