The Go Programming Language Specificationの翻訳、4回目です。
前回までの訳はGo言語仕様[日本語訳]にまとめてあります。


定数

定数にはブーリアン定数、整数定数、浮動小数点定数、文字列定数があります。整数定数と浮動小数点定数はまとめて数値定数とも呼ばれます。

定数の値は整数リテラル浮動小数点リテラル文字リテラル文字列リテラル、定数を示す識別子、定数式unsafe.Sizeofのような組み込み関数からの戻り値、配列のcapまたはlen、文字列定数のlenによって表されます。ブーリアンの真理値は事前宣言済み定数trueおよびfalseによって表されます。事前宣言済み識別子iotaは整数リテラルを表します。

数値定数はサイズを持たず、またオーバーフローすることがない任意精度の値を表します。

定数にはを持つもの、持たないものがあります。リテラル定数、truefalseiota、および”定数式内の全オペランドが型を持たない定数”のときは、定数は型を持ちません。

定数は定数の宣言または変換によって明示的に、または変数の宣言代入のオペランドで使われるときに暗黙的に、型が付与されます。ただし定数の値が、各型の値を正確に表現することができなければエラーとなります。例えば、3.0はすべての整数型もしくは浮動小数点型にすることができます。しかし、2147483648.0(1<<31と同値)はfloat32型、float64型、uint32型にはできますが、int32型やstring型にはできません。

実装の制約:コンパイラは数値定数の内部表現に最小でもマシンの倍のビット数を使います。浮動小数点の値については、仮数部と指数部それぞれが倍になります。