iota

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

你可能感兴趣的:(iota)