ガクセイハッカソン

Go言語マスター 〜メソッド・レシーバ〜

2022-10-23 公開

はじめに

Goのメソッドやレシーバについて解説します。

Methods

Goにはクラスの代わりに、型にメソッドを定義できます。

以下の例はX, Yの2つのメンバーを持ち、Absというメソッドが定義されています。メソッドは名前の前に(v Vertex)というようにレシーバ引数を記述します。
初期化した後に、v.Absというようにしてメソッドを呼び出すことができます。

type Vertex struct {
  X, Y float64
}

func (v Vertex) Abs() float64 {
  return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func main() {
  v := Vertex{3, 4}
  fmt.Println(v.Abs())
}

Choosing a value or pointer receiver

値レシーバとポインタレシーバの使い分けですが、基本的にはポインタレシーバで統一すると良いとされます。

おわりに

今回は、Goでのメソッドやレシーバについて解説しました。

関連記事