英文:
How to mix iota and values
问题
在包含 iota 的 Go 枚举中,如何强制某些值,同时自动递增其他值?
例如,在这段源代码中:
const (
SUCCESS int = iota
ERROR_UNKNOWN = 3
ERROR_ARGS
NOFILES = 50
ERROR_OPEN_FILE
ERROR_BADFILENAME
)
ERROR_ARGS
的值是 ERROR_UNKNOWN
,而我期望它是 ERROR_UNKNOWN + 1
。
有没有一种方法可以实现自动递增和“强制”值的混合,而不使用“_”方法,因为对于像这样的大间隔(从 4 到 50,需要插入 46 行“_”)非常麻烦。
在下面的第一个回答之后进行澄清:值必须始终“向前”,即使在强制值之后也要自动递增。
英文:
In a Go enum containing iota, how is it possible to force some values, yet auto-incrementing others?
For example, in this source code,
const (
SUCCESS int = iota
ERROR_UNKNOWN = 3
ERROR_ARGS
NOFILES = 50
ERROR_OPEN_FILE
ERROR_BADFILENAME
)
ERROR_ARGS
=ERROR_UNKNOWN
, where I expected it to be ERROR_UNKNOWN + 1
.
Is there a way to achieve mixing auto-increment and 'forcing' values, without the _
method, that is cumbersome for big gaps like here (4 to 50, inserting 46 _
lines...)
Clarifying after first answer below: Values must always 'go forwards', auto-incrementing even after a forced value.
答案1
得分: 2
这是翻译好的内容:
无法使用 iota 设置 ERROR_ARGS = ERROR_UNKNOWN + 1
,你可以像这样混合自动递增和手动赋值:
const (
SUCCESS int = iota
ERROR_UNKNOWN
ERROR_ARGS = ERROR_UNKNOWN + 1
NOFILES
ERROR_OPEN_FILE
ERROR_BADFILENAME
)
对应的值将是:
0
3
4
50
5
6
英文:
It's not possible to set ERROR_ARGS = ERROR_UNKNOWN + 1
by iota, you can mix automatic increment with manual value like this:
const (
SUCCESS int = iota
ERROR_UNKNOWN = 3
ERROR_ARGS = iota
NOFILES = 50
ERROR_OPEN_FILE = iota
ERROR_BADFILENAME
)
Values will be:
0
3
2
50
4
5
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论