iota
go语言中不支持枚举定义,但是使用
iota
可以实现类似效果
枚举定义
package main
import "fmt"
const (
a int = iota
b
)
func main() {
fmt.Println(a, b)
}
0 1
iota
实际被定义为0
,仅配合const
关键字来使用也仅在此const
范围中有效
iota原理
iota
有两个功能:
- 为
const
范围内后续的常量复制相同的表达式 -
iota
的初始常量为0,之后的iota
的值在每次处理为常量时都会自增1
高级示例
package main
import "fmt"
const (
a int = 1 << iota
b
)
func main() {
fmt.Println(a, b)
}
1 2