【发布时间】:2021-03-20 11:23:52
【问题描述】:
我目前正在阅读 GoLang 教程并有以下疑问。
arr1:=[...]int{1,2,3}
arr2:=arr1
arr1[1]=99
fmt.Println(arr1)
fmt.Println(arr2)
它输出以下语句
[1 99 3]
[1 2 3]
这里只修改了数组 a,这是有意义的,因为数组被视为值。
如果我尝试跟随事情变得混乱
a:=[...]int{1,2,3}
b:=a[:]
a[1]=88
fmt.Println(a)
fmt.Println(b)
这会导致打印
[1 88 3]
[1 88 3]
问题:这是否意味着说 b:=a 创建数组的副本,而说 b:=a[:] 将创建一个指向底层数组(在本例中为“a”)的切片?
【问题讨论】: