栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过将指针传递给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
)更有效,更方便且更简洁。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号