【Go 语言学习笔记】数据类型

发表于 2023-06-21

已经对 Go 编程语言有了整体上的认识了,接下来应该深入学习 Go 语言的细节 -- 数据类型。

数据类型

Go 语言数据类型主要以下几种大类:

  • 布尔型
  • 数字类型
  • 字符串类型
  • 派生类型

布尔型

布尔型的值可以说是两个常量,并且也只能是这两个值:true、false。

布尔型的标识符:bool

举一个例子:

// 定义一个变量 b,类型是 bool(布尔型),值为 true。
var b bool = true

数字类型

整型和浮点型,Go 语言还支持复数。

整数

数字类型主要是整数。

又有有符号和无符号的区别,这个符号是负数。这里内存占用和值范围的原理涉及二进制就不展开了。

类型 描述 内存占用 范围
uint8 无符号 8 位整型 1 Byte(8 bit) 0 - 255
uint16 无符号 16 位整型 2 Byte(16 bit) 0 - 65535
uint32 无符号 32 位整型 4 Byte(32 bit) 0 - 4294967295
uint64 无符号 64 位整型 8 Byte(64 bit) 0 - 18446744073709551615
int8 有符号 8 位整型 1 Byte(8 bit) -128 - 127
int16 有符号 16 位整型 2 Byte(16 bit) -32768 - 32767
int32 有符号 32 位整型 4 Byte(32 bit) -2147483648 - 2147483647
int64 有符号 64 位整型 8 Byte(64 bit) -9223372036854775808 - 9223372036854775807

浮点数

浮点主要是用来存储小数,并且浮点计算存在一定的精度问题。

Go 语言中浮点型使用的是 IEEE 二进制浮点数算术标准(IEEE 754)。

类型 描述 内存占用
float32 IEEE-754 标准单精度(32 位浮点数) 4 Byte(32 bit)
float64 IEEE-754 标准双精度(64 位浮点数) 8 Byte(64 bit)

复数

以 complex64 为例,它的实部和虚部都是 float32。

类型 描述 内存占用
complex64 复数 32 位实数和虚数 4 Byte(32 bit)
complex128 复数 64 位实数和虚数 8 Byte(64 bit)

其他

Go 语言中还有一些特殊的数字类型,用来记录一些其他东西,例如字符、指针。

类型 描述
byte 类似 uint8 或者说是其别名,存放占 1 字节的 ASCII 字符
rune 类似 int32 或者说是其别名,存放多字节字符
uint 是和运行的执行架构有关:32、64 位
int 是和运行的执行架构有关:32、64 位
uintptr 无符号整型,用于存放一个指针

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。

Go 的字符串是由单个字节连接起来的。

Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。

派生类型

  • 指针类型(Pointer)
  • 数组类型
  • 结构化类型(struct)
  • Channel 类型
  • 函数类型
  • 切片类型
  • 接口类型(interface)
  • Map 类型