自分でその場で定義したinterfaceにcastすることによって、Rubyの `respond_to?` 相当の処理をする。
https://github.com/stretchr/testify の実装にたまたまjumpしたらそういう例が見えた。
assertions.go
if h, ok := t.(tHelper); ok {
h.Helper()
}
tHelper
は同ファイルの下で定義していてdef.go
type tHelper interface {
Helper()
}
既存のライブラリにある型にcastしてみてokなら専用処理をする みたいな例はよく見るけど、その場で独自のinterface定義作ってcastを試みて、成功したら呼ぶ みたいな
respond_to?
相当のことをする みたいな例は初めて見たのでおもしろかった。