選考直結型ガクセイハッカソン 2025.03の開催レポート
2025-04-14 公開
2022-10-23 公開
Goのメソッドやレシーバについて解説します。
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())
}
値レシーバとポインタレシーバの使い分けですが、基本的にはポインタレシーバで統一すると良いとされます。
今回は、Goでのメソッドやレシーバについて解説しました。