技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

iota(const内の連番)【Go】

const内で連番を振る時に使用します。

const (
    c1 = iota
    c2 = iota
    c3 = iota
)

func main() {
    fmt.Println(c1, c2, c3)    // 0 1 2 3
}


constの性質を利用できるため、iotaは一度の記述でも問題ありません。

const (
    c1 = iota
    c2
    c3
)

func main() {
    fmt.Println(c1, c2, c3)    // 0 1 2 3
}


iotaが連番を管理するので、記述ミスなどを防ぐことができます。
例えば、容量のKB、MB、GBは次のように表すことができます。

const (
    _      = iota    // 0は使用しないため、破棄
    KB int = 1 << (10 * iota)    // シフト演算子を使用して、10*iotaビット左にずらす(10ビットなら2の10乗)
    MB    // constは、代入値の記載がない場合、上に記載されているものが引き継がれる。iotaだけ連番となる
    GB    // constは、代入値の記載がない場合、上に記載されているものが引き継がれる。iotaだけ連番となる
)

func main() {
    fmt.Println(KB, MB, GB)
}