KDOC 53: Goで独自定義のエラーをconstにする
Goではプログラマを縛る方法が少なく、開発者を信用し性善説で行く方針になっている。
constの制約が大きく、例えば独自定義のエラーを定義するとき、以下のように書けない。
const errNotFound = errors.New("not found")
いっぽうvarで定義すると簡単にできる。
var errNotFound = errors.New("not found")
しかしvarなので、書き換えができてしまう。これを、書き換えられないようにするには、というのが本題である。以下のようにする。
// プリミティブ型の定義型を作る
type errNotFound int
// メソッドを定義してerrorインターフェースを満たす
func (e errNotFound) Error() string {
return "not found error"
}
// インスタンス(プリミティブ型)をconstにする
const (
ErrNotFound errNotFound = 0
)
関連。
- 実用 Go言語で解説されていた方法