在GO语言中引入枚举的标准方式是声明一个自定义类型和一个使用了iota的const组,由于变量有一个0的默认值,通常情况下,以非0值开始枚举。
Bad
type Operation int
const (
Add Operation = iota //从0开始
Subtract
Multiply
)
// Add=0, Subtract=1, Multiply=2
Good
type Operation int
const (
Add Operation = iota + 1
Subtract
Multiply
)
// Add=1, Subtract=2, Multiply=3
在某些情况下,使用零值是有意义的,例如,零值是合适的默认行为。
type LogOutput int
const (
LogToStdout LogOutput = iota //默认零值
LogToFile
LogToRemote
)
// LogToStdout=0, LogToFile=1, LogToRemote=2