常量
常量分为:布尔型,rune 型,整型,浮点型,复数型,字符串型。其中 rune,整型,浮点型,复数型统称为数字常量。
常量的值可以表示为一个 rune 字面量,整数字面量,浮点数字面量,虚数字面量,字符串字面量,表示常量的标识符,常量表达式,一个转换结果为常量的类型转换,和一些返回值为常量的内置函数(接受任何值的 unsafe.Sizeof
,接受部分表达式的 cap
或 len
,接受虚数常量的 real
和 imag
,接受数字常量的 complex
)。布尔类型的值为预定义常量 true
或 false
,预定义的标识符 iota
表示一个整型常量。
一般情况下复数常量是常量表达式的一种形式。会在常量表达式章节详细讨论。
数字常量可以表示任意精度的确定值而且不会溢出。因此,没有常量可以表示非 0,无穷大和非数字值。
常量可以指定类型也可以不指定类型。字面值常量, true
, false
, iota
,和只包含无类型常量操作的常量表达式是无类型的。
常量可以通过常量声明和转换时显式的指定具体类型,也可以隐式的在变量声明、赋值或作为表达式操作元时隐式的指定具体类型。如果常量的值和他的类型不匹配,会报错。
无类型常量由一个默认的类型,这个类型会根据使用常量时的上下文进行隐式转换。例如:短变量声明 i := 0
没有指定 i 的类型。无类型常量的默认类型可以是: bool
, rune
, int
, float64
, complex128
或者 string
,具体选择哪种类型由常量的值决定。
实现限制:虽然数字常量在 Go 中是任意精度,不过编译器在实现时会在内部限制精度。这意味着每个编译器实现都要:
至少保证整形常量有 256 位
浮点数常量(包括复数常量)都要保证至少 256 位的主体部分和至少 16 位的有符号指数部分
如果不能表示给定整数的精度抛出错误
如果浮点数或复数溢出抛出错误
如果由于精度限制不能表示浮点数或者复数进行舍入
这些要求同时作用于字面量常量额和常量表达式的结果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论