go 内置数据类型
- 基础类型
- bool(布尔类型)
true,false
布尔型可以和 && 和 || 操作符结合,会有短路行为。
&& 的优先级高于 ||。
- 整型
int8、byte、int16、int、uint、uintptr、int32、int64、uint等
Unicode 字符 rune 类型 和 int32 是等价的,通常用于表示一个 Unicode 码点。这两个名称可以互换使用。
byte 和 uint8 是等价的,byte 类型一般用于强调数值是一个原始的数据,而不是一个小的整数。
无符号的整数类型 uintptr 没有指定具体的 bit 大小,但足以容纳指针。uintptr 只有在底层编程才需要,特别是 Go 和 C 函数库或操作系统接口相交互的地方。
int 和 int32 是不同的类型,即使 int 的大小也是 32 bit。
- 浮点类型
float32、float64
应该优先使用 float64 类型,因为 float32 类型的累计计算误差很容易扩散,并且 float32 能精确表示的正整数并不是很大。因为 float32 的有效 bit 位只有23个,其它的 bit 位用于指数和符号;当整数大于23bit能表达的范围时,float32 的表示将出现误差。
- 复数类型
complex64、complex128 分别对应 float32 float64 两种浮点数精度。
内置的 complex 函数用于构建复数,内建的 real 和 imag 函数分别返回复数的实部和虚部。
如果一个浮点数或一个十进制整数后面跟着一个i,例如3.141592i或2i,它将构成一个复数的虚部,复数的实部是0。
- 字符串
string
内置的 len 函数返回一个字符串的字节数目,不是rune字符数目。
所以操作 s[i] 返回第 i 个字节的字节值。
第 i 个字节不一定是字符串的第 i 个字符,因为对于非 ASCII 字符的 UTF8 编码会要两个或多个字节。
- 操作符将两个字符串连接成一个新字符串。
字符串可以用==和<进行比较;比较通过逐个字节 比较完成的
不变性意味如果两个字符串共享相同的底层数据的话也是安全的,这使得复制任何长度的字符串代价是低廉的,同样切割操作的代价也是廉价的,都没有必要分配新的内存。
- 字符类型
rune,byte
在go语言中支持2个字符类型,一个是byte(unit8的别名),代表utf8字符串的单个字节的值;另一个是rune,代表unicode的字符
- 错误类型
error
- 复合类型
- 指针
pointer
- 数组
array
- 切片
slice
- 字典
map
- 通道
channel
- 结构体
struct
- 接口
interface