为了账号安全,请及时绑定邮箱和手机立即绑定

为什么数组的值可以被另一个变量改变

为什么数组的值可以被另一个变量改变

Go
喵喵时光机 2022-10-17 16:53:10
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个赞

您使用的是切片,而不是数组。在您的程序中,arrarr2都是指向同一个数组的切片。更改它,以便:

    arr := [3]int{0,0,0}

然后,arr是一个数组,它可以按您的预期工作。


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号