Go语言中数组

数组是一个值类型

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\t", arryA[0])
	fmt.Printf("arryB[0] = %d\n", arryB[0])
	fmt.Printf("arryA[1] = %d\t", arryA[1])
	fmt.Printf("arryB[1] = %d\n", arryB[1])
	fmt.Printf("arryA[2] = %d\t", arryA[2])
	fmt.Printf("arryB[2] = %d\n", 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

所以在利用数组进行传参的时候,要注意一点传递的是数组的副本,并非本身,如果有需要修正数组内的值并影响原来的数组,就必须要传地址。

  

猜你喜欢

转载自www.cnblogs.com/dcz2015/p/10510136.html