Go语言中预定义常量iota的用法
Go语言中预定义了这些常量:true、false、iota.
iota可以被认为是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,在下一个const出现之前,每出现一次iota,其所代表的数字会自增1.
示例:
package main
import "fmt"
const (
a = iota
b = iota
c = iota
d
e
)
const x = iota
const (
y = iota
z
)
func main() {
fmt.Println(a, b, c, d, e, x, y, z)
}
程序运行后会打印:
0 1 2 3 4 0 0 1
x,y值之所以为0,就是因为新出现了const关键字,iota被重置。
iota只能在常量的表达式中使用,不能当作变量使用。
a:= iota
会出现undefined: iota错误。
跳过部分值
我们可以使用某些方法跳过iota的某些值。
package main
import "fmt"
const x = iota
const (
y = iota
z
)
const (
_ = iota
a
b
_
_
c
)
func main() {
fmt.Println(a, b, c)
}
运行上面这段代码,输出为:1、2、5
常量表达式中的运用
const (
a = iota + 1 // 0+1
b // 1+1
c // 2+1
)
iota在同一行中的应用
iota值在同一行中的值不会发生改变:
package main
import "fmt"
const x = iota
const (
y = iota
z
)
const (
a, b = iota, iota
c, d
e, _
)
func main() {
fmt.Println(a, b, c, d, e)
}
运行上述代码,打印 0 0 1 1 2
const声明中,每行赋值都会使iota增1
const (
a = iota
b = 999
c = iota //这里需要使用iota
d
)
c值为2,d 为3。