在 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)
}