1
爲什麼我不需要將PrintValue()定義爲指針接收器(* One)以便能夠打印「hello」?作爲指針的方法接收器之間的區別
package main
import "fmt"
type One struct{
a string
}
func (o *One)AssignValue(){
o.a = "hello"
}
func (o One)PrintValue(){
fmt.Println(o.a)
}
func main() {
one := One{}
one.AssignValue()
one.PrintValue()
}
所以這是「幕後魔法」......如果你問我,有點混亂。 –
但是,如果AssignValue()未被定義爲指針接收者,則PrintValue()會打印一個空字符串。那爲什麼呢? –
因爲那麼''AssignValue'中的'o'被複制並且您的修改僅在副本上完成。 – nemo