ポインタ型のレシーバー、ポインタ型の struct embed
golang の struct のレシーバーを struct への ポインタ型にした場合とか、エンベッドしたときにポインタ型にした場合とかの挙動の違いがいまいち把握できてなかったのですが、ポインタとはなんぞや、を思い出して納得しました。
- メモリアローケーションされてないポインタを介しての参照は1部の例外をのぞいてすべて panic
これが原則として、では、例外とはなんぞや?ってことなんですが、
1つはこれですね。レシーバーがポインタの場合に限っては nil のポインタを介してメソッドの実行が可能。これは人によっては便利につかう場面もありそうです。
これは、structへのポインタとしてエンベッドされた埋め込み struct が nil の場合でも同様にその先のメソッドを呼べますが、もとの struct が nil だと、ダメです。えっとめんどいな。参照になるんですかねー。
続きは playground で。
参考。本質的なことが書いてある(きがする