Skip to content

Goでinterfaceのtype switchに記述漏れがあったら検出する

type switchで分岐するインターフェイスがSealed Interfaceなとき、言い換えると

type Interface { private() }

のようにインターフェイスを満たす型が限定できるとき、case で網羅していないと怒られるようなものがほしい。そういった用途にBurntSushi/go-sumtypeが使えそうだった。

Linterの名前はSum Typeに由来するので正しいが、見つけづらいので exhaustive という語を含んでおいてほしかった。

関連メモにはGoでenumの記述漏れを検出するGoで構造体フィールド初期化漏れを検出するがある。