2
请教一个 Go 的小白问题
source link: https://www.v2ex.com/t/827825
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
请教一个 Go 的小白问题
( A ) func DoSomething(a *A) {
b = a
}
( B ) func DoSomething(a A) {
b = &a
}
这两个函数调用的区别具体是什么呢
7 条回复 • 2022-01-12 18:23:43 +08:00
xidaduo 4 小时 24 分钟前
A:引用传递
B:值传递
B:值传递
wunonglin 4 小时 10 分钟前
A:传进来的是那个结构体的内存地址(吧?)
B:通俗来说传入的 a 是 new 了一个一个零值的结构体,然后在把你传的结构赋值上去。
B:通俗来说传入的 a 是 new 了一个一个零值的结构体,然后在把你传的结构赋值上去。
hejw19970413 3 小时 33 分钟前
例如 a 现在的地址为 0x0000000001 值为 1
( A ) 函数中的 a 地址是 0x0000000002 但是 a 的值是 0x0000000001
( B ) 函数中的 a 地址是 0x0000000003 但是 a 的值是 1
( A ) 函数中的 a 地址是 0x0000000002 但是 a 的值是 0x0000000001
( B ) 函数中的 a 地址是 0x0000000003 但是 a 的值是 1
Arrowing 3 小时 4 分钟前
*A 是 A 的指针类型
labulaka521 2 小时 55 分钟前
在函数里面修改 b 的值 然后在此函数外面看看 a 的值是否也被改了
milk97 2 小时 26 分钟前
(A) 是 point receiver, https://go.dev/tour/methods/4
如果对 b 做修改,外面 a 指向的值也会变。
( B )这样写意义不大。`b = &a` 中的 a 已经是调用时参数 a 的一个 copy ,再取它的指针没什么意义,因为修改了 b 不是影响到外面的 a 。
如果对 b 做修改,外面 a 指向的值也会变。
( B )这样写意义不大。`b = &a` 中的 a 已经是调用时参数 a 的一个 copy ,再取它的指针没什么意义,因为修改了 b 不是影响到外面的 a 。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK