Go/宣言済定数
表示
< Go
Goにおける宣言済定数(Predeclared constants)は、パッケージをインポートすることなく、プログラムのどこからでも参照できる特別な定数です。
これらは大きく分けて、真偽値、数値生成用、そしてゼロ値(無)の3つのカテゴリーに分類されます。
1. 真偽値 (Boolean constants)
[編集]論理演算や条件分岐で使用される、最も基本的な定数です。
これらは bool 型の唯一の有効な値です。
iota は、const 宣言の中でのみ使用できる特殊な識別子です。
iota: 0から始まり、行が進むごとに1ずつ増加する型なし整数の定数です。- 列挙型(Enums)のような構造を定義する際に非常に便利です。
const ( Apple = iota // 0 Banana = iota // 1 Cherry = iota // 2 )
nil は、変数が何も指していない、あるいは初期化されていない状態を表す定数です。
nil: ポインタ、インターフェース、マップ、スライス、チャネル、および関数型の「ゼロ値」として定義されています。- 注意:
intやstring、boolなどの基本データ型にnilを代入することはできません。これらにはそれぞれ独自のゼロ値(0,"",false)があります。
💡 重要な性質:型のない定数 (Untyped Constants)
[編集]Goの宣言済定数(特に true, false, iota)は、「型のない(Untyped)」という性質を持っています。
これにより、コンテキストに応じて柔軟に異なる型として振る舞うことができます。例えば、const x = iota と書いたとき、この x は int としても float64 としても、代入先の型に合わせて柔軟に適合します。
⚠️ 予約語との違い
[編集]true, false, iota, nil は「宣言済識別子」であり、if や for のような「予約語(Keywords)」ではありません。
技術的にはこれらを別の意味で再定義(シャドウイング)することが可能ですが、コードの可読性を著しく損なうため、独自の変数名や定数名として使用することは絶対に避けるべきです。
// 悪い例:nilを別の値で上書き(非常に危険) nil := "hello"