登录
首页 >  Golang >  Go问答

为何一个变量可以改变数组的值

来源:stackoverflow

时间:2024-02-21 08:24:21 200浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《为何一个变量可以改变数组的值》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

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


正确答案


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

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

那么,arr 是一个数组,它会按照您的预期工作。

今天关于《为何一个变量可以改变数组的值》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>