Go言語の定数宣言は扱いましたが、この宣言の中で特徴的な使い方をするものがあります。
それは、識別子iota(イオタ)です。
このiotaについて見ていきましょう。
iota
識別子iotaは、定数宣言内で連続する整数を表します。予約語のconstが現れるたびに0にリセットされます。
こう書くとわかりにくにので、実際にコードで試してみましょう。
package main
import "fmt"
const (
c0 = iota
c1 = iota
c2 = iota
)
func main() {
fmt.Println(c0)
fmt.Println(c1)
fmt.Println(c2)
}
constの中で定数を宣言しています。それに対して、iotaを代入しています。
これを出力すると次のような結果が示されます。
0
1
2
0から始まり、1づつ増えているのがわかります。
このコードは次のように書くこともできます。
package main
import "fmt"
const (
c0 = iota
c1
c2
)
func main() {
fmt.Println(c0)
fmt.Println(c1)
fmt.Println(c2)
}
const内で宣言した定数の最初のものにだけiotaを代入しています。
これを実行しても先ほどと同様の結果になります。
0
1
2
このようにiotaを定数宣言内で利用すると、連続した整数値をとります。
constを使用する毎に0にリセット
この連続する整数値をとるiotaは、constが現れるたびに0にリセットされて処理されます。
次のコードで確認してみましょう。
package main
import "fmt"
const (
c1 = iota
c2
c3
)
const (
c4 = iota
c5
c6
)
func main() {
fmt.Println(c1)
fmt.Println(c2)
fmt.Println(c3)
fmt.Println(c4)
fmt.Println(c5)
fmt.Println(c6)
}
ここでは、constでの定数宣言を2つ行っています。
それぞれにiotaで初期化しています。
実行すると次のようになります。
0
1
2
0
1
2
このように、constが現れてると0から再度連続する整数値をとるようになります。
最後に
Go言語のiota(イオタ)について見てきました。
iotaは定数宣言内で利用し、定数が0から連続した整数値をとります。
constが現れるたびに、リセットされて再び0からの連続した整数値をとります。
同じような処理はPythonでは見あたらないのでここでもPythonコードは省略します。