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