常量
在 Go 语言中有 布尔常量、rune 常量、整数常量、浮点数常量、复数常量 和 字符串常量。rune、 整数、浮点数和复数常量也统称为 数字常量。
一个整型值可以由如下类型表示:
- rune
- 整型
- 浮点小数
- 虚数
- 字符串序列
- 一个表示常量的标识符
- 一个 常量表达式
- 一个以常量作为结果的 类型转换
- 一些内置函数的运行结果 9 例如对任何值使用
unsafe.Sizeof
- 一些表达式 的cap
orlen
- 复数常量的real
andimag
- 数字常量的complex
布尔值由预定义的常量 true
和 false
表示。预定义的标识符 iota 表示一个整数常量。
通常,复合常事是常量表达式的一种形式,并将在本节中进行讨论。
数字常数表示任意精度的精确值,并且不会溢出。因此,没有常量表示 IEEE-754 的负零,无穷大和非数字值。
常量可以是有类型 或 无类型 的。文字常量, true
, false
, iota
, 和某些常量表达式仅包含未类型化的常量操作数是未类型化的。
常量可以通过常量声明或转换显式的指定类型,在变量声明或分配中用作隐式变量表达式。如果常量值不能作为相应类型的值表示,则会出现错误。
一个未显示定义类型的常量具有默认类型,这是在上下文中需要将常量隐式转换为的类型。例如在 [短变量声明](golang.org/ref/ spec#Short_variable_declarations) i:= 0
就是没有显式类型的。无类型常量的默认类型会根据其字面类型被推断为为 bool
、rune
、int
、float64
或是 complex128
。
实现限制:尽管数字常量在语言中具有无限精度,但是编译器可能会因实现的问题造成京都限制。而每个实现都必须满足:
- 用至少 256 位表示整数常量
- 用至少 256 位表示浮点常数、复数常数;用至少 16 位表示带符号的二进制指数
- 如果无法精确表示整数常量,则报错
- 如果由于溢出而无法表示浮点数或复数常量,则报错
- 如果由于精度限制而无法表示浮点数或复数常数,则四舍五入到最接近的可表示常数
以上既适用于字面常量也适用于计算 常量表达式 的结果。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。