我正在尝试为我定义的类型生成枚举
type FeeStage int
Run Code Online (Sandbox Code Playgroud)
从这个我知道,我可以用丝毫基于这种类型来创建一个枚举
const(
Stage1 FeeStage = iota
Stage2
Stage3
)
Run Code Online (Sandbox Code Playgroud)
但是,操纵枚举的实际值是相当麻烦且容易出错的
const(
Stage1 FeeStage = iota // 0
Stage2 = iota + 6 // 7
Stage3 = (iota - 3) * 5 // -5
)
Run Code Online (Sandbox Code Playgroud)
有没有办法自动将带有自定义值的ENUM列表转换为某种类型.这是我以前使用的,但只将常量的第一个成员转换为自定义类型.
const(
Stage1 FeeStage = 1
Stage2 = 2
Stage3 = 2
)
Run Code Online (Sandbox Code Playgroud)
这是一个结果相似的游乐场
没有办法超越使用iota
和自动枚举,或做最直接的事情:
const(
Stage1 FeeStage = 1
Stage2 FeeStage = 2
// or another syntax with same results
Stage3 = FeeStage(2)
)
Run Code Online (Sandbox Code Playgroud)
恕我直言,比iota + 5
你说的那样笨重的东西真的很糟糕.
我通常要么使用iota,如果值超出程序的上下文不重要,要么显式输入,如果我需要在协议或其他东西中使用的值.
虽然我不得不说有时只使用整数或字符串就足够了,但这取决于上下文.例如,请参阅标准库中的http状态代码.它们没有特殊类型.
归档时间: |
|
查看次数: |
1900 次 |
最近记录: |