go 切片问题

winnie123321 · · 875 次点击
你main函数中打印的是切片,demo4中打印的是切片地址。 而且切片在函数传参的时候直接传就行了,不用加&,切片是一个结构体,类似这样 ```go type slice struct { ptr *T, length int, cap int } ``` ptr指向切片首个元素的地址,所以说函数传切片是地址传递
#1
更多评论
![QQ截图20180801173858.png](https://static.studygolang.com/180801/91a3d72ddca621b2f59bfe5b4ea738ce.png) 两个切片的结果还是不相同
#2
demo3()中,你可以通过number1[n]来修改切片内部成员的值,而把number2附给number1只会在demo3()中有效,main()中的number1和demo3()中的number1是2个变量 如果你要新建切片附给number,可以这么做 ```go func main() { var num []int fmt.Printf("main %p %v \n", num, num) demo(&num) fmt.Printf("main %p %v \n", num, num) } func demo(num1 *[]int) { fmt.Printf("demo %p %v \n", *num1, *num1) num2 := []int{2, 4} *num1 = num2 fmt.Printf("demo %p %v \n", *num1, *num1) } ```
#3