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 语言中数组指针作为参数传递时,如何影响原数组?的详细内容,更多请关注其它相关文章!