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

为什么取消引用的指针被传递给指针类型?

为什么取消引用的指针被传递给指针类型?

Go
智慧大石 2022-08-24 11:21:44
type animal struct{  sound string}func (a *animal) bark(s string) {  (*a).sound = s}var yourAnimal *animal //yourAnimal is an address so this makes sense i.e. the receiver expects an address since it is of type *animal:yourAnimal.bark("woof")fmt.Println(*yourAnimal)//But why does this prints out the value "waff"?(*yourAnimal).bark("waff")fmt.Println(*yourAnimal)  // 2为什么这个(我拥有的最后一个Println //2)打印出值“waff”?它到底是什么意思(*动物)?这是取消引用动物,所以是一个值,该值被传递给接收者,接收者接受指向动物的指针而不是值?为什么这是合法的?正确的一个应该是地址吗?
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

接收器有一个指针接收器。这意味着,调用实际上是 ,它与上一个调用的对象相同。bark(*yourAnimal).bark("waff")(&(*yourAnimal)).bark("waff")



查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

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