はじめに
本記事は以下のツイートの翻訳転載です。
コンパイル時のインターフェイス検証
Write()
関数を持つBuffer
インターフェースと、
それを実装したStringBuffer
構造体を想像してほしい。
以下のように、誤ってWrite()
ではなくWriteee()
のようにタイプミスをした関数を実装してしまった場合、
The error isn't caught until runtime. By using the trick below, the compiler will alert you with an IDE error message:
エラーは実行時まで発見されません。
しかし、以下のようにすることで、実際に実行するより前に、エディタがエラーメッセージで警告してくれます。
おわりに
Goでは明示的にインターフェースの実装が示されない(良くも悪くも)ので、
// 明示的なインターフェースの実装
// StringBufferがBufferの実装であることがわかる
class StringBuffer implements Buffer
このインターフェースを実装するという意図がコードから読み取れるようになるので良いなと思った。
実装の定義の直下に1行足しておくだけで導入できるのも良い。