此篇文章是我参与 #青训营笔记创作活动 的第10篇笔记
主要是简单记录一下自己在学习Go语言基础语法中的变量部分时遇到的一些小要点,
只是个人的一个学习记录,水平不高还望大佬们包容。
0x01 整数类型
Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、16、32、64 bit(二进制位)大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。
此外还有两种整数类型 int 和 uint,它们分别对应特定 CPU 平台的字长(机器字大小),其中 int 表示有符号整数,应用最为广泛,uint 表示无符号整数。实际开发中由于编译器和计算机硬件的不同,int 和 uint 所能表示的整数大小会在 32bit 或 64bit 之间变化。
与C、C++等其他语言相类似的整数类型,赶时间的话稍微看一下过一遍就OK了。
当然啦,知道go语言帮我们在不同场合即需要下设置了许多的整数类也是很有用的。我们知道无论是有符号整数亦或是无符号整数,它们都有各种不同的大小的类型可供选择,而不同大小又会影响它们自身的取值范围以及内存占用,go语言在一开始就提供了众多的整数类型,可以方便我们在代码中更好地选择最合适的大小的整型变量。
下表为部分整数类型的取值范围及内存用情况:
| 类型 | 取值范围 | 内存占用情况 |
|---|---|---|
| int8 | -128至127 | 8位(1字节 |
| uint8 | 0至255 | 8位(1字节 |
| int16 | 32768至32767 | 16位(2字节 |
| uint16 | 0至65535 | 16位(2字节 |
| int32 | -2147 483 648至2147 483 647 | 32位(4字节 |
| uint32 | 0至4 294 967 295 | 32位(4字节 |
| int64 | -9 223 372 036 854 775 808至9 223 372 036 854775 807 | 64位(8字节) |
| uint64 | 0至18 446744073 709 551 615 | 64位(8字节) |
0x02 浮点类型
Go语言提供了两种精度的浮点数 float32 和 float64,它们的算术规范由 IEEE754 浮点数国际标准定义,该浮点数规范被所有现代的 CPU 支持。
这些浮点数类型的取值范围可以从很小到很大:
- float32 能取到的最大值大约是 3.4e38,最小值大约是 1.4e-45
- float64 能取到的最大值大约是 1.8e308,最小值大约是 1.4e-45 和 4.9e-324
- 一个 float32 类型的浮点数可以提供大约 6 个十进制数的精度,而 float64 则可以提供约 15 个十进制数的精度
- 通常应该优先使用 float64 类型,因为 float32 类型的累计计算误差很容易扩散,并且 float32 能精确表示的正整数并不是很大
0x03 复数类型
-
在计算机中,复数是由两个浮点数表示的,其中一个表示实部,一个表示虚部。
-
Go语言中复数的类型有两种
- complex128(64 位实数和虚数)
- complex64(32 位实数和虚数)
-
其中 complex128 为复数的默认类型
声明复数的语法格式如下所示:
var name complex128 = complex(x, y)
-
name 为复数的变量名
-
complex128 为复数的类型
-
“=”后面的 complex 为Go语言的内置函数用于为复数赋
-
x、y 分别表示构成该复数的两个 float64 类型的数值
- x 为实部
- y 为虚部
也可以简写为:
name := complex(x, y)
- 对于一个复数
z := complex(x, y),可以通过Go语言的内置函数real(z)来获得该复数的实部(x)通过imag(z)获得该复数的虚部(y)
0x04 bool类型
基本和其他高级语言差不多,不过需要注意:
-
Go语言中不允许将整型强制转换为布尔型
-
布尔值也不会隐式转换为数字值 0 或 1,反之亦然,必须使用 if 语句显式的进行转换
-
i := 0 if b { i = 1 }
-
附录
本文参考链接及推荐阅读: