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