数组是一个值类型
func ArrayTest1(){ var arryA [3]int = [3]int{1,2,3} //创建一个数组B,将B中第二个元素设置为200 arryB := arryA arryB[1] = 200 //打印A、B数组的值 fmt.Printf("arryA[0] = %d ", arryA[0]) fmt.Printf("arryB[0] = %d ", arryB[0]) fmt.Printf("arryA[1] = %d ", arryA[1]) fmt.Printf("arryB[1] = %d ", arryB[1]) fmt.Printf("arryA[2] = %d ", arryA[2]) fmt.Printf("arryB[2] = %d ", arryB[2]) }
结果:
arryA[0] = 1 arryB[0] = 1 arryA[1] = 2 arryB[1] = 200 arryA[2] = 3 arryB[2] = 3
从上面结果可以看到,只用B的第二元素被修正了,这里说明A和B直接的拷贝是值拷贝,如果想要都修正,需要传地址,修改上面的赋值语句,为如下
arryB := &arryA
所以在利用数组进行传参的时候,要注意一点传递的是数组的副本,并非本身,如果有需要修正数组内的值并影响原来的数组,就必须要传地址。