书接上回,昨天整理了一下go的字面量,今天来梳理一下go的基本类型中的布尔和数值类型。
布尔(Booleans)类型
bool 类型没什么好说的,它只有两个值true 和false ,它的零值为false 。
var flag bool
var isBeautiful = true
数值类型
go有12种不同的数值类型,它们分为三类:整型、浮点、复数。go的数值类型不像c语言那样用char 、short 、int 、long 、float 、double 这类和操作系统位数相关的数值类型。
对于整数类型,它统一用int 表示并在其后标示其位数。如下表:
类型名 | 取值范围 |
---|
int8 | -128 to 127 | int16 | –32768 to 32767 | int32 | –2147483648 to 2147483647 | int64 | –9223372036854775808 to 9223372036854775807 | uint8 | 0 to 255 | uint16 | 0 to 65536 | uint32 | 0 to 4294967295 | uint64 | 0 to 18446744073709551615 |
对于浮点类型,它用float32 和float64 表示32位和64位浮点数。如下表:
类型名 | 最大绝对值 | 最小非零绝对值 |
---|
float32 | 3.40282346638528859811704183484516925440e+38 | 1.401298464324817070923729583289916131280e-45 | float64 | 1.797693134862315708145274237317043567981e+308 | 4.940656458412465441765687928682213723651e-324 |
几个特别的整数类型
byte 是uint8 的化名,两者完全等价。
int 在32位系统上是int32 在64位系统上是int64 ,因此当int 与int32 或int64 的变量在赋值比较或数学计算时会出现编译错误。go语言不支持变量间的隐式类型转换,这也是我很喜欢go语言的一个点,go直接把很多语法语义上容易出错的写法禁止了,虽然不那么方便了,但是使代码更清晰了。
uint 与int 类似只不过非负。
整数字面量默认是int 类型。
rune 和uintptr 也是两个特别的整数类型,以后再介绍它们。
运算
go的数值运算和其他语言类似。
整数不能除0,浮点数除0会得到+Inf 和-Inf ,而浮点0除0会得到NaN 。
浮点数的比较是不精确的。
复数类型
我也是今天才知道go居然有复数类型,分别是complex64 和complex128 。
感觉这个类型可能永远也用不到,就不学它了😊。
欢迎关注我的微信公众号 江达小记
|