golang 中的数组是值类型。在我的理解中,值类型保存的是值,而不是内存地址。所以下面的代码,变量arr不应该改变。但它没有。我想知道为什么func main() { arr := []int{0,0,0} arr2 := arr arr[1] = 1 fmt.Println(arr, arr2) // output [0 1 0] [0 1 0] // output in thought [0 0 0] [0 1 0]}也许这是一个基本问题。但是我找到了一些文章。他们都只是说在golang中哪些是引用类型和值类型。但它不能帮助我解决我的问题。
1 回答

浮云间
TA贡献1829条经验 获得超4个赞
您使用的是切片,而不是数组。在您的程序中,arr
和arr2
都是指向同一个数组的切片。更改它,以便:
arr := [3]int{0,0,0}
然后,arr
是一个数组,它可以按您的预期工作。
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消