为了账号安全,请及时绑定邮箱和手机立即绑定

这些功能有什么区别?

这些功能有什么区别?

Go
富国沪深 2022-06-01 16:07:17
以下功能有什么区别?func DoSomething(a *A){    b = a}func DoSomething(a A){    b = &a}
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

第一个函数接收指向类型值的指针A。第二个接收类型 A 的值的副本。这是调用第一个函数的方式:

a := A{...}
DoSomething(&a)

在这种情况下DoSomething,接收指向原始对象的指针并可以对其进行修改。

这里调用第二个函数:

a := A{...}
DoSomething(a)

在这种情况下DoSomething接收 的副本a,因此它不能修改原始对象(但如果原始对象包含指向其他结构的指针,它可以修改它们)


查看完整回答
反对 回复 2022-06-01
?
白板的微信

TA贡献1883条经验 获得超3个赞

func DoSomething(a *A) { // a is a pointer to given argument of type A

    b = a // b is a copy of a, which is also the same pointer


    // this is useful to change the given object directly

}


func DoSomething(a A) { // a is a copy of the given object type A

    b = &a // b is the pointer of a

}

请记住,指针是一个保存内存地址的变量。


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信