iota介绍
iota是Go语言中的一个预定义标识符,用于在常量声明中创建连续的枚举值。它在常量声明中的每一行都会自动递增; 当你在常量声明中使用iota时,它的初始值为0,然后每遇到一个新的常量声明,iota的值就会递增1。这使得在一组相关常量中定义连续的枚举值变得非常方便。
使用示例
package main
import "fmt"
const (
Monday = iota // start value with 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
Saturday // 5
Sunday // 6
)
func main() {
fmt.Printf("Monday: %d\n", Monday)
fmt.Printf("Tuesday: %d\n", Tuesday)
fmt.Printf("Wednesday: %d\n", Wednesday)
fmt.Printf("Thursday: %d\n", Thursday)
fmt.Printf("Friday: %d\n", Friday)
fmt.Printf("Saturday: %d\n", Saturday)
fmt.Printf("Sunday: %d\n", Sunday)
}
常见用法
iota和<<结合使用,<<在golang中标识左移运算,a << b标识把a的二进制值左移两位,即a*2^b
示例代码
const (
_ = iota // skip the default value 0
K = 1 << (10 * itoa) // 1024
M = 1 << (10 * itoa) // 1048576
)
对于每个常量块,iota是独立的
package main
import "fmt"
const (
A = iota // 0
_
B = iota // 2
_
C = iota // 4
)
const (
D = iota // 0
E = iota // 1
)
const (
F = iota // 0
G = 10
H = iota // 2
)
func main() {
fmt.Printf("A: %d\n", A)
fmt.Printf("B: %d\n", B)
fmt.Printf("C: %d\n", C)
fmt.Printf("D: %d\n", D)
fmt.Printf("E: %d\n", E)
fmt.Printf("F: %d\n", F)
fmt.Printf("H: %d\n", H)
}
//ouput
/**
A: 0
B: 2
C: 4
D: 0
E: 1
F: 0
H: 2
**/