如何在 Go 中使用 enum?
一般利用 iota 来设置 enum。
引用自语言规范 : iota
在常量声明中,预先声明的标识符 iota 表示连续的无类型整数常量。 每个 const 的声明内,iota 都会先被重置为 0,并在每个 ConstSpec (组内常量)之后递增。 它可以用来构造一组相关的常量:
const ( // iota 重置为 0
c0 = iota // c0 == 0
c1 = iota // c1 == 1
c2 = iota // c2 == 2
)
const (
a = 1 << iota // a == 1 ( iota 重置为 0)
b = 1 << iota // b == 2
c = 1 << iota // c == 4
)
const (
u = iota * 42 // u == 0 (untyped integer 常量)
v float64 = iota * 42 // v == 42.0 (float64 常量)
w = iota * 42 // w == 84 (untyped integer 常量)
)
const x = iota // x == 0 (iota 重置为 0)
const y = iota // y == 0 (iota 重置为 0)
在多个 const 声明中,每个 iota 的值都相同,因为它仅在每个 ConstSpec 之后递增
const (
bit0, mask0 = 1 << iota, 1<<iota - 1 // bit0 == 1, mask0 == 0
bit1, mask1 // bit1 == 2, mask1 == 1
_, _ // 跳过 iota == 2
bit3, mask3 // bit3 == 8, mask3 == 7
)
可以用下划线
_
跳过不想要的值。
可以这样
const (
A = iota
C
T
G
)
或者
type Base int
const (
A Base = iota
C
T
G
)
引入一个有别于 int 的类型。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: