golangでenum
iotaを使うべき場面について
概要
- iotaを使うべき場面についてのメモ
iotaとは
golang/goにおけるiotaの説明の通り。
意味のある値には使わない
it provides a generality beyond that of simple enumerations.
iotaは順番に依存した単純なincremental numberなので、列挙型として使うべきであり、数値自体に意味がある場合には利用するべきではない。
列挙型
enumと呼ばれ、関係するconstantを一つのtypeにまとめるものを指す。例えば下記のような場面で使われる。
- Timezones: EST, CST…
- T-shirt Sizes: Small, Medium, Large
- Server Statuses: Unknown, Running, Stopped, Resumed
なぜenumが必要かというと、下記の利点が挙げられる。
- 値をグループ化して、決められた値のみを期待できる
- 一般的な振る舞いを共有出きる
- 想定外の値の利用を制限できる
- コードの可読性、保守性を向上する
0は使わない
golangでは初期宣言時にint型の場合は0が設定される。
そのため、0は使わない方がいい。
type Activity int
const (
Sleeping = iota
Walking
Running
)
func main() {
var activity Activity
// activity initialized to
// its zero-value of int
// which is Sleeping
}
なので、iota + 1を使って置くか、unknownを利用すると良い。
iota + 1パターン
const (
Sleeping = iota + 1
Walking
Running
)
unknownパターン
const (
Unknown = iota
Sleeping
Walking
Running
)