Dev Study
Go コース

32. メソッド — レシーバを持つ関数

メソッドは、特定の型に結び付いた関数です。func (p Point) Distance() float64 のように、関数名の前に「レシーバ」と呼ばれる特別な引数を一つ書きます。このレシーバが、そのメソッドがどの型に属するかを表します。呼び出すときは p.Distance() のように、値にドットでつなげて使います。

Go ではクラスがなくても、自分で定義した型(構造体など)にメソッドを付けられます。レシーバの型は同じパッケージ内で定義した型である必要がありますが、構造体に限らず、独自に名前を付けた型なら数値ベースの型にもメソッドを定義できます。これにより、データと振る舞いを型ごとにまとめて表現できます。

メソッドは「型に属する関数」にすぎず、内部的には第一引数にレシーバを取る関数と同じです。メソッドの中ではレシーバ越しにフィールドへアクセスして計算します。次のレッスンでは、このレシーバを「値」で受けるか「ポインタ」で受けるかという、重要な使い分けを学びます。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗