Go 示範:方法

Go 支援定義於結構類型上的方法

package main
import "fmt"
type rect struct {
    width, height int
}

這個 area 方法具有接收類型*rect

func (r *rect) area() int {
    return r.width * r.height
}

可以為指標接收類型或值接收類型定義方法。這裡有一個值接收範例。

func (r rect) perim() int {
    return 2*r.width + 2*r.height
}
func main() {
    r := rect{width: 10, height: 5}

這裡我們呼叫為結構定義的 2 個方法。

    fmt.Println("area: ", r.area())
    fmt.Println("perim:", r.perim())

Go 自動處理值和指標之間轉換以呼叫方法。您可能想使用指標接收類型以避免複製方法呼叫或允許方法變更接收結構。

    rp := &r
    fmt.Println("area: ", rp.area())
    fmt.Println("perim:", rp.perim())
}
$ go run methods.go 
area:  50
perim: 30
area:  50
perim: 30

下一步我們將研究 Go 的機制,用於群組和命名相關的一組方法:介面。

下一個範例:介面