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言語で解説されていた方法