/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2018/10/15 Go言語の構造体への埋め込みについて

アメリカのドラマを見ていると、よくアジア人として中国人が出てきます。映画グレムリンで出てくるモグワイもチャイナタウンで中国人から買ったし、Sex and The City でシャーロットが養子としてもらった女の子も中国からでした。Big Bang Theory でも中国人の研究者はたまに出てきますが、日本人の研究者は1回廊下で出てきたかどうか?だった気がします。アジア人といえば最近は "Crazy Rich Asians"(邦題は確かクレイジーリッチ)が面白そうですが、これも設定は中国人のようです(まだ見ていないので違ったらすみません)

会話の中で Japan という単語が出てくることは割とあって、Back to the Future で坑道に埋もれていた車のパーツは日本製でクールだ、みたいな話があったり、上記ドラマでも Japan という単語は出てくるし、寿司レストランもたびたび登場します。

会話には出てくるし日本食も有名だけれど、日本「人」というのはキャラクターとして動かしづらいのか、性格が掴みづらいのか、もしくは英語圏の映画で英語を話せるイメージがあまりにも薄いのかも?映画やドラマで Japan という単語が出てくると、ふとそんなことを考えたりします。

埋め込みする場合はフィールド名をつけない

Go 言語では埋め込み(Embedding)を利用することで、ある構造体のメソッドを別の構造体に引き継ぐことが可能です(移譲、Delegation)。

今書いているプログラムで、移譲先と移譲元とオブジェクトで合わせてインタフェースを実装したかったのですが、うまくいかずに調べていました。分かったのは、埋め込みを行う場合は、その構造体のフィールド名には名前をつけてはいけないようです。

逆に名前をつければ埋め込みにはならないんですね。何でもかんでも埋め込みされてしまうのは不便そうだなと思っていましたが、、初歩的なことだと思いますがつまづいたのでメモしておきます。

stackoverflow.com

qiita.com

今までスライスもよく分かっていなかったのですが、ブログ書くようになって、分かったことを記録するようにしてから自然に理解できるようになりました。ちょっとしたアウトプットでも重要なのかもしれません。