• 枚举类型值从 1 开始

    枚举类型值从 1 开始

    在 Go 中使用枚举的标准方法是声明一个自定义类型并通过 iota 关键字来声明一个 const 组。但是由于 Go 中变量的默认值都为该类型的零值,所以枚举变量的值应该从非零值开始。

    BadGood
    1. type Operation int
    2. const (
    3. Add Operation = iota
    4. Subtract
    5. Multiply
    6. )
    7. // Add=0, Subtract=1, Multiply=2
    1. type Operation int
    2. const (
    3. Add Operation = iota + 1
    4. Subtract
    5. Multiply
    6. )
    7. // Add=1, Subtract=2, Multiply=3

    在某些情况下,从零值开始也是可以的。例如,当零值是我们期望的默认行为时。

    1. type LogOutput int
    2. const (
    3. LogToStdout LogOutput = iota
    4. LogToFile
    5. LogToRemote
    6. )
    7. // LogToStdout=0, LogToFile=1, LogToRemote=2