```go
func main() {
x := []int{1, 2, 3}
y := []int{1, 2, 3}
changeSlice(x, y)
fmt.Println(x, y) //[1 10 3] [1 2 3]
//可以看到只有x发生了改变,而y没有改变,为什么呢?
}
func changeSlice(x []int, y []int) {
x[1] = 10
y = append(y, 20)
}
```
通过函数来传递两个切片,然后对它处理。发现如果是直接通过索引方式来改变切片是生效的,否则是不生效的。
但是通过打印地址看,其实在这个函数里面,对于变量为切片的,其实也是值传递。既然是值传递,说明传进来的两个切片是一个完
全的全新切片。与原来的切片内存地址并没有关联,那为什么通过索引的方式能够改变到原切片的值呢?