方法

方法 在 Go

3 個練習

關於 方法

方法是一種帶有特殊_接收者_引數的函式。 接收者會出現在它自己的引數列表中,位於func關鍵字與方法名稱之間。

func (receiver type) MethodName(parameters) (returnTypes) {

}

只有當接收者的型別與該方法定義於相同套件時,你才能定義這個方法。

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

接收者分成兩種:值接收者和指標接收者。

帶有值接收者的方法會對傳入值的複本進行操作,這表示方法內對接收者所做的任何修改,對呼叫者來說都不可見。

你可以使用指標接收者宣告方法,以便修改接收者所指向的值。 這類修改對方法的呼叫者來說也可見。

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

你可以在這裡找到幾個範例。 也可以看看這篇關於方法的簡短教學。

記得:方法就只是帶有接收者引數的函式。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 方法

練習已鎖定

再解鎖 2 個練習,就能練習 方法