go学习笔记(3)基本类型和声明(2)

今天接了出春招机试题的任务,要求是出简单题,我在网上找了几道题改了改,最后评审的时候发现我出的这几道题稍有些难😂。采纳了一道。

说来也怪,出题的时候看这道也觉得简单,看那道也觉得简单。内心os反正参加机试的肯定都刷过题,出这个是不是太简单了😂。

书接上回,昨天整理了一下go的字面量,今天来梳理一下go的基本类型中的布尔和数值类型。

布尔(Booleans)类型

bool类型没什么好说的,它只有两个值truefalse,它的零值为false

1
2
var flag bool // 如果没赋值则置为零值false
var isBeautiful = true

数值类型

go有12种不同的数值类型,它们分为三类:整型、浮点、复数。go的数值类型不像c语言那样用charshortintlongfloatdouble这类和操作系统位数相关的数值类型。

对于整数类型,它统一用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

对于浮点类型,它用float32float64表示32位和64位浮点数。如下表:

类型名 最大绝对值 最小非零绝对值
float32 3.40282346638528859811704183484516925440e+38 1.401298464324817070923729583289916131280e-45
float64 1.797693134862315708145274237317043567981e+308 4.940656458412465441765687928682213723651e-324
几个特别的整数类型

byteuint8的化名,两者完全等价。

int在32位系统上是int32在64位系统上是int64,因此当intint32int64的变量在赋值比较或数学计算时会出现编译错误。go语言不支持变量间的隐式类型转换,这也是我很喜欢go语言的一个点,go直接把很多语法语义上容易出错的写法禁止了,虽然不那么方便了,但是使代码更清晰了。

uintint类似只不过非负。

整数字面量默认是int类型。

runeuintptr也是两个特别的整数类型,以后再介绍它们。

运算

go的数值运算和其他语言类似。

整数不能除0,浮点数除0会得到+Inf-Inf,而浮点0除0会得到NaN

浮点数的比较是不精确的。

复数类型

我也是今天才知道go居然有复数类型,分别是complex64complex128

感觉这个类型可能永远也用不到,就不学它了😊。

好了今天就到这里了,我们明天见!

江达小记