Go言語で定数を定義するとき、Goのiotaを使って、便利な方法を紹介します。
Goの定数定義について
以下のコードで説明します。
package main
import “fmt”
const (
v1 = “first”
v2
v3
v4
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
import “fmt”
const (
v1 = “first”
v2
v3
v4
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
結果:
first
first
first
first
first
first
first
first
first
結果から見ると、以下の結論が出ました。
結論:Goの定数を定義する際に、明示的に値を設定しない場合は、一つ前の定数の値で設定される。
iotaとは
iotaは、定数宣言(const)の内での既定された識別子です。
0から型なしの整数の連番を生成する。
コードで確認しましょう。
package main
import “fmt”
const (
v1 = iota
v2
v3
v4
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
import “fmt”
const (
v1 = iota
v2
v3
v4
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
結果:
0
1
2
3
4
1
2
3
4
結論:0から連番でプラス1となりましたね。
iotaのリセットについて
ここまで、iotaは連番の数字を取得できることが分かりましたが、iotaの値は0に戻りたい場合、どのように書けばよいか。
コードで確認しましょう。
package main
import “fmt”
const (
v1 = iota
v2
v3
)
const (
v4 = iota
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
import “fmt”
const (
v1 = iota
v2
v3
)
const (
v4 = iota
v5
)
func main() {
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
fmt.Println(v4)
fmt.Println(v5)
}
結果:
0
1
2
0
1
1
2
0
1
結論:次のconstが現れたらリセットされる。