总的来说,Golang中的数据类型分为四个大类,分别是:布尔类型、数字类型、字符串类型和派生类型
布尔类型
布尔类型很简单,用来表示正和误,值只能为true或是false。如果声明变量时没有指定初值,默认为false。
布尔类型不能参与数值运算,也不能与其他类型转换。
数字类型
数字类型分为整型、浮点型、复数和其他数字类型四类。
整型(int系列)
整数类型有10种,也比较好记,它们主要是用于不同的数据范围,从而节省分配的空间。
- int(有符号32/64位整型)、uint(无符号32/64位整型)
- int8(有符号8位整型)、uint8(无符号8位整型)
- int16(有符号16位整型)、uint16(无符号16位整型)
- int32(有符号32位整型)、uint32(无符号32位整型)
- int64(有符号64位整型)、uint64(无符号64位整型)
其中int和uint受计算机架构影响,32位计算机上int和uint是32位,64位计算机上int和uint是64位。
其他8种整数类型的数据范围不受架构影响,可以根据要表示的数据大小来选定合适的数据类型。
浮点型(float系列)
虽然写的是float系列,但是Golang并没有float这个类型。浮点数有两种类型:
- float32:IEEE754 32位浮点数
- float64:IEEE754 64位浮点数
建议优先选用float64类型,因为float32提供的精度有限,计算时的累计误差比较大。
较大或较小的浮点数可以用科学计数法来表示,例如1.23e15表示$1.23×10^{15}$。
复数(complex系列)
Golang没有complex类型,只有complex64和complex128两种类型:
- complex64:32位实部和32位虚部
- complex128:64位实部和64位虚部
默认的复数类型是complex128,复数的声明如下:
对于一个复数a = complex(x, y),可以用real(a)获取a的实部,用imag(a)获取a的虚部。
建议多使用默认类型complex128,各种包中的函数都是以complex128类型的数作为参数或返回值的。
其他数字类型
- byte:字符类型,uint8的别名,表示一个ascii码字符(0~255)
- rune:字符类型,相当于int32,表示一个Unicode码点