この記事で取り扱っているGoのお作法について解釈が間違っていると指摘をいただきました。 詳細はこちらをご覧ください。 Go言語には"Accept interfaces, return structs"というお作法がある。 このお作法の存在に気づいていなかったし、そうでなくても正しく動いてくれていた。 Goを3年ほど書いてきてようやくお作法を理解したので紹介したい。 これまでのぼくの書き方 以下にこれまでぼくが書いていたコードのinterface定義の例とその実装の例を示す。 Example structはExample interfaceの定義を満たしており、DoSomething関数を持つ。 interfaceのありがたみはinterfaceさえ参照すれば、それを満たすstructがどんな関数を持っているのか知ることができる点だとばかり思っていた。 interfaceを引数に取る関数に依