下面这段代码输出什么?
package main
import "fmt"
const (
a = iota
b = iota
)
const (
name = "name"
c = iota
d = iota
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
0
1
1
2
代码解析:
第一个 const 块
a = iota:iota在const块中从0开始计数,因此a = 0b = iota:iota自增到1,因此b = 1
第二个 const 块
name = "name": 未使用iota,但iota初始值为0,声明后自增到1c = iota: 当前iota值为1,因此c = 1d = iota:iota继续自增到2,因此d = 2
关键规则
iota在每个const块中从0开始计数- 每行常量声明(无论是否使用
iota)都会使iota自增1 - 不同
const块的iota相互独立