method & receiver

method

  • Go には class が無い.
  • その代わりに,receiver を用いて type に method を定義する.

receiver

  • receiver は,func キーワードと method の間に引数リストをとる.
  • receiver には,変数レシーバーとポインターレシーバーがある.
  • 変数レシーバーは元の変数のコピーを操作する.
  • ポインターレシーバーは元の変数を変更する.

pointer reciever

  • メソッドがポインターレシーバーの場合,呼び出し時に,変数またはポインタのいずれかをレシーバーとして取ることができる.
    • ポインターレシーバーが引数に変数を受け取るとポインターとして解釈してくれる.
    • 利便性のために.
  • ポインタレシーバーを使う理由は
    • メソッドがレシーバーが指す先の変数を変更するため.
    • メソッドの呼び出し毎に変数のコピーを避けるため.