go 言語において呼び出し元に interface のみを公開することで実装の詳細を隠ぺいすると、gomock を使ったテストがやり易くなります。 ざっくり結論だけ書くとこんな感じのコーディングパターンにすると良いよって感じなので、これだけ見て、何が言いたいのかすぐに分かる人は続きを読まなくても良いと思います。 package intf type Duck interface { Quack() string} type duck struct {} func NewDuck() Duck { return &duck{}} func (d *duck) Quack() string { return "QUUAAAACCCCKK!!!"}コピー interface と実装が分離されたアヒル#最初のポイントは、公開する interface として定義された Duck と非公開の struc
![go言語のコンストラクタでinterfaceを返す | さにあらず](https://cdn-ak-scissors.b.st-hatena.com/image/square/0c90f9b821152566c2885cbd42dddf0101304786/height=288;version=1;width=512/https%3A%2F%2Fblog.satotaichi.info%2Fimages%2Fcover.jpg)