KDOC 52: Goで構造体がインターフェースを実装しているか確認する
Goで、構造体がインターフェースを実装しているか確認したいときがある。
var _ インタフェース名 = 構造体初期化
とすればよい。
https://github.com/kd-collective/go/blob/2eca0b1e1663d826893b6b1fd8bd89da98e65d1e/src/cmd/compile/internal/syntax/syntax.go#L31
var _ error = Error{} // verify that Error implements error
解説。
errorは組み込みのインターフェースである。小文字だから普通のローカル変数に見える。
https://github.com/kd-collective/go/blob/2eca0b1e1663d826893b6b1fd8bd89da98e65d1e/src/builtin/builtin.go#L305-L309
/ The error built-in interface type is the conventional interface for / representing an error condition, with the nil value representing no error. type error interface { Error() string }
指定シグネチャを備えていないと、インターフェースを満たせず代入できないためチェックできる、というわけ。