我正在尝试在Go语言中使用枚举,以下是我的代码。我无法找到一种简单的方法来遍历常量值列表。在golang中,遍历用作枚举的常量值的常见做法是什么?谢谢!
type DayOfWeek int
const(
Monday DayOfWeek = iota
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
在Java中,我们可以按如下方式进行迭代。public enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
for (DayOfWeek day: DayOfWeek.values()) {
// code logic
}
for d := Monday; d <= Sunday; d++ {}
,其中您明确知道起始/结束值,或者您可以为其添加别名(例如,像firstDay = Monday; lastDay = Sunday
这样)。尽管可能会更进一步制作出使用range
的东西,但在我看来这绝对不值得。 - Dave Ctime.Weekday
可以从time.Sunday
到time.Saturday
。当然,你只是恰好将一周的天数作为任意示例,这并不重要。 - Dave Cfor i := Monday; i < LastDay; i++ {
这样的循环。这样,如果万一需要在一周中添加第八天,只需将其插入到虚拟结束标记LastDay
之前即可。这是在不支持枚举迭代内置支持的语言(如C、Go等)中常见的模式。 - wldsvc