go创建数组指定长度和不知道长度的区别

一. 指定了长度的返回的是保存了数组的变量,属于值传递,发生赋值行为时会对原数组进行拷贝
二. 没有指定长度的返回的是数组的切片,是对数组的引用,内存中只保存了一份,发生赋值行为时,实际上是对数组地址的拷贝,内存中的数组还是只有一份

验证例子

arr := []int{1, 2, 3}
arr1 := [3]int{1, 2, 3}

p := arr
p1 := arr1

p[0] = 10
p1[0] = 11

fmt.Println(arr)
fmt.Println(p)

fmt.Println(arr1)
fmt.Println(p1)

版权声明:本文为qq_42488996原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。