通过将指针传递给Go中的函数来获取不同的值

通过将指针传递给Go中的函数来获取不同的值,第1张

通过将指针传递给Go中的函数来获取不同的值

因为这一行:

p = &Test{4}

只需为

p
变量分配一个新的指针值即可。在
f()
函数内部,
p
只是一个局部变量。通过向分配任何新值
p
,您只是在更改局部变量的值,而 不是
指向的值。

中的

p
局部变量
f()
与中的
p
局部变量无关
main()
。如果你改变
p
f()
,它不会改变
p
main()
(这也不会改变尖结构值)。

在第二个示例中:

p.Value = 4

它是以下各项的简写:

(*p).Value = 4

这改变了 尖锐的 价值,因此你会时遵守变化

f()
的回报。

注意:

顺便提一句,如果在

main()
函数中将
p
(地址为
main()
指针的局部变量)的地址传递给function
f()
,则可以修改存储在main的地址
p

func f(p **Test) {    *p = &Test{4}}

从中

main()
调用,就像这样:

var i Test = Test{2}var p *Test = &if(&p)println(i.Value) // 2 - Note that 'i' won't change!println(p.Value) // 4 - only the address in 'p' to the new struct value created in f()

但是显然,传递单个指针

*Test
并修改指针值(
p.Value = 4
)更有效,更方便且更简洁。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5170681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存