Go 语言中数组指针作为参数传递时,如何影响原数组?

go 语言中数组指针作为参数传递时,如何影响原数组?

理解 go 语言中数组指针作为参数的传递机制

go 语言允许以数组指针的方式传递数组参数,这将对原数组产生不同的影响。下面我们将逐一分析此代码片段中的各个函数。

update1

func update1(a [3]int) {
    a[1] = 1
}

update1 接收的是一个数组副本。对该副本的修改不会影响原数组。

update2

func update2(p *[3]int) {
    a := *p
    a[1] = 2
}

update2 接收的是数组指针。但是,a := *p 也会创建一个数组副本。因此,对该副本的修改也不会影响原数组。

update3

func update3(p *[3]int) {
    (*p)[1] = 3
}

update3 接收的是数组指针,并且直接修改指向的数组。因此,对数组的修改会影响原数组。

update4

func update4(p *[3]int) {
    p[1] = 4
}

update4 实际上相当于 update3 的语法糖,同样是对数组指针的直接修改,从而影响原数组。

以上就是Go 语言中数组指针作为参数传递时,如何影响原数组?的详细内容,更多请关注其它相关文章!