定数

Go(Golang)における定数(constants)は、プログラム中で値が変更されない固定値を定義するために使用されます。定数は計算の途中で変更されることのない値を明示的に示すため、可読性や保守性を高める効果があります。


1. 定数の定義方法

Goではconstキーワードを使って定数を定義します。

go
const Pi = 3.14 const Greeting = "Hello, Go!"
  • Piは浮動小数点数の定数。

  • Greetingは文字列の定数です。


2. 定数の型

Goの定数には型付き定数型なし定数があります。

型なし定数(untyped constant)

go
const x = 10

この場合、x型が未指定であり、後から使用する文脈によってintfloat64など適切な型に変換されます。

型付き定数(typed constant)

go
const y int = 10

このように明示的に型を指定することも可能です。型付き定数は、その型に固定されます。


3. 複数定数の定義

Goではconstブロックを使って複数の定数を一括で定義できます。

go
const ( A = 1 B = 2 C = 3 )

4. iotaによる連番定義

Goの定数定義で特に特徴的なのが、iotaという識別子です。これは自動的にインクリメントされる定数ジェネレータで、主に列挙値に使われます。

go
const ( Sunday = iota // 0 Monday // 1 Tuesday // 2 )
  • iotaconstブロックの中で0から始まり、1ずつ増加します。

  • iotaを使うことで、シンプルに連番の定数を定義できます。

さらに応用例:

go
const ( _ = iota // 最初の値は破棄(無視) KB = 1 << (10 * iota) // 1 << 10 = 1024 MB // 1 << 20 = 1048576 GB // 1 << 30 = 1073741824 )

5. 定数の制約

  • 定数はコンパイル時に値が決定される必要があります。

  • 関数の戻り値など、実行時にしか決まらない値は定数にできません

go
func getValue() int { return 100 } const x = getValue() // コンパイルエラー

6. 使用例

go
package main import "fmt" const Pi = 3.14159 func main() { const Radius = 5 area := Pi * Radius * Radius fmt.Println("面積 =", area) }

まとめ

特徴 内容
キーワード const
型付き/型なし定数の両方に対応
変更不可 定義後は再代入できない
特殊機能 iotaで連番定義可能
使用目的 不変の値(設定値、列挙値など)の表現に最適

Goの定数は、コードの意味を明確にし、誤って値が変更されるのを防ぐために非常に有用です。

生成日:2025/05/03