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

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中哪些是引用类型和值类型。但它不能帮助我解决我的问题。


喵喵时光机
浏览 133回答 1
1回答

浮云间

您使用的是切片,而不是数组。在您的程序中,arr和arr2都是指向同一个数组的切片。更改它,以便:    arr := [3]int{0,0,0}然后,arr是一个数组,它可以按您的预期工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go