在 Go 中,一個函數可以被賦值給結構體,這種情況下我們稱之為方法。
舉個例子:
type Person struct {
Name string
Age int
}
func (p Person) Speak() {
fmt.Println("Hello from " + p.Name)
}
func main() {
flavio := Person{Age: 39, Name: "Flavio"}
flavio.Speak()
}
方法可以聲明為指針接收者或值接收者。
上面的例子展示了一個值接收者,它接收結構體實例的副本。
下面是一個指針接收者,它接收結構體實例的指針:
func (p *Person) Speak() {
fmt.Println("Hello from " + p.Name)
}