Go Specificationのconstant declarationsの最後近くで、iotaがconst
の値として割り当てられています。
Iota
は定義済みの識別子です。
package main
import (
"fmt"
)
const (
a = iota
b = iota
c = iota
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
}
値がオートインクリメントしているのが分かります。オートインクリメントする定数をセットするのには、最初だけiota
をセットすることだけでも可能です。
package main
import (
"fmt"
)
const (
a = iota
b
c
)
const (
d = iota
e
f
)
func main() {
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
fmt.Println(f)
}
こちらのコードではオートインクリメントが定数を宣言しているグループごとにリセットされていることが分かります。