gpt4 book ai didi

loops - 如何创建枚举并对其进行迭代

转载 作者:行者123 更新时间:2023-12-03 10:06:45 26 4
gpt4 key购买 nike

我正在尝试在 Go 中复制 Java 枚举。我想定义一个枚举,然后对其进行迭代以进行一些验证。在java中是这样的

public enum Direction {
NORTH,
NORTHEAST,
EAST,
SOUTHEAST,
SOUTH,
SOUTHWEST,
WEST,
NORTHWEST
}
我想迭代它,像这样:
for (Direction dir : Direction.values()) {
// do what you want
}
在 Golang 中是否有类似的方法来实现这一点,我正在考虑使用结构,但我认为这不是最好的方法。
有任何想法吗?

最佳答案

Go 没有等效于 Java 的枚举,但通常 iota 当您想创建“类似枚举”的常量时会派上用场。
你的例子可能是这样描述的:

type Dir int

const (
NORTH Dir = iota
NORTHEAST
EAST
SOUTHEAST
SOUTH
SOUTHWEST
WEST
NORTHWEST
dirLimit // this will be the last Dir + 1
)
然后遍历所有方向(在 Go Playground 上尝试):
for dir := Dir(0); dir < dirLimit; dir++ {
// do what you want
}
另见: Go Wiki: Iota
对于高级使用和技巧 iota ,请参阅这些答案:
How to skip a lot of values when define const variable with iota?
Enumerating string constants with iota

关于loops - 如何创建枚举并对其进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64178176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com