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

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”?它到底是什么意思(*动物)?这是取消引用动物,所以是一个值,该值被传递给接收者,接收者接受指向动物的指针而不是值?为什么这是合法的?正确的一个应该是地址吗?


智慧大石
浏览 85回答 1
1回答

森林海

接收器有一个指针接收器。这意味着,调用实际上是 ,它与上一个调用的对象相同。bark(*yourAnimal).bark("waff")(&(*yourAnimal)).bark("waff")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go