C++中我们使用enum关键字来定义枚举,但是在go中没有这个关键字,但是为我们提供iota关键字。
iota是优雅的自增量!!!!
this is an enumerator for const creation. The Go compiler starts iota at 0 and increments it by one for each following constant. We can use it in expressions.
它默认开始值是0,const中每增加一行加1。
package main
import “fmt”
const (
Low = 5 * iota
Medium
High
)
func main() {
// Use our iota constants.
fmt.Println(Low) // 0
fmt.Println(Medium) // 5
fmt.Println(High) // 10
}
如果中断iota,必须显式恢复!!!
package main
import “fmt”
const (
Low = iota
Medium
High = 100
Super
Band = iota
)
func main() {
// Use our iota constants.
fmt.Println(Low) // 0
fmt.Println(Medium) // 1
fmt.Println(High) // 100
fmt.Println(Super) // 100
fmt.Println(Band) // 4
}
常量声明省略值时,默认和之前一个值的字面相同!
package main
import (
“fmt”
)
const (
x = iota // x==0
y = iota // y==1
z = iota // z==2
w // 常量声明省略值时,默认和之前一个值的字面相同(这里隐式地说w=iota,因此w==3)
)
const v = iota // 每遇到一个const关键字,iota就会重置,此时v==0
iota在同一行值相同!
const (
h, i, j = iota, iota, iota // h=0, i=0, j=0, iota在同一行值相同
)
const(
a = iota // a=0
b = “B”
c = iota // c=2
d,e,f = iota,iota,iota // d=3,e=3,f=3
g = iota // g = 4
)