Looks Go To Me

golang をゆったり学びます。

ポインタ型のレシーバー、ポインタ型の struct embed

golang の struct のレシーバーを struct への ポインタ型にした場合とか、エンベッドしたときにポインタ型にした場合とかの挙動の違いがいまいち把握できてなかったのですが、ポインタとはなんぞや、を思い出して納得しました。

  • メモリアローケーションされてないポインタを介しての参照は1部の例外をのぞいてすべて panic

これが原則として、では、例外とはなんぞや?ってことなんですが、

qiita.com

1つはこれですね。レシーバーがポインタの場合に限っては nil のポインタを介してメソッドの実行が可能。これは人によっては便利につかう場面もありそうです。

これは、structへのポインタとしてエンベッドされた埋め込み struct が nil の場合でも同様にその先のメソッドを呼べますが、もとの struct が nil だと、ダメです。えっとめんどいな。参照になるんですかねー。

続きは playground で。

The Go Playground

参考。本質的なことが書いてある(きがする

The empty struct | Dave Cheney