Go type
| 类型分类 | 类型名称 | 描述 |
|---|---|---|
| 基本数据类型 | bool | 布尔类型,值为 true 或 false |
int | 有符号整数,平台相关(通常为 32 位或 64 位) | |
int8 | 8 位有符号整数 | |
int16 | 16 位有符号整数 | |
int32 | 32 位有符号整数 | |
int64 | 64 位有符号整数 | |
uint | 无符号整数,平台相关(通常为 32 位或 64 位) | |
uint8 | 8 位无符号整数 | |
uint16 | 16 位无符号整数 | |
uint32 | 32 位无符号整数 | |
uint64 | 64 位无符号整数 | |
uintptr | 用于存储指针的无符号整数类型,大小与指针相同 | |
float32 | 单精度浮点数 | |
float64 | 双精度浮点数 | |
complex64 | 单精度复数类型 | |
complex128 | 双精度复数类型 | |
string | 字符串类型,表示一串 Unicode 字符 | |
| 衍生类型 | [n]T | 数组类型,包含 n 个元素,类型为 T |
[]T | 切片类型,动态数组 | |
map[K]V | 映射类型,K 为键类型,V 为值类型 | |
struct | 结构体类型,表示多个不同类型的字段组合 | |
*T | 指针类型,指向 T 类型的变量 | |
| 函数类型 | func | 函数类型,定义函数签名,包括参数列表和返回类型 |
| 接口类型 | interface | 接口类型,定义方法集合,支持多态和动态绑定 |
| 自定义类型 | type MyInt int | 自定义类型,基于现有类型创建新类型 |
| 类型别名 | type MyString = string | 类型别名,将已有类型重新命名 |
| 类型转换 | T(x) | 类型转换,显式地将变量 x 转换为类型 T |
类型标注
以下是 Go 语言常见数据类型及其类型标注的简明总结表格,侧重于类型标准:
| 类型类别 | 数据类型 | 类型标注 | 描述 |
|---|---|---|---|
| 整型 | 有符号整型 | int, int8, int16, int32, int64 | 有符号整数,大小依平台而定。 |
| 无符号整型 | uint, uint8, uint16, uint32, uint64 | 无符号整数,大小依平台而定。 | |
| 浮点型 | 单精度浮点型 | float32 | 32 位浮点数 |
| 双精度浮点型 | float64 | 64 位浮点数 | |
| 布尔型 | 布尔值 | bool | true 或 false |
| 字符型 | Unicode字符 | rune(等价于 int32) | 32 位字符,表示单个 Unicode 字符 |
| ASCII 字符 | byte(等价于 uint8) | 8 位无符号整数,通常表示 ASCII 字符 | |
| 字符串型 | 字符串 | string | 不可变字符串,使用 UTF-8 编码 |
| 数组 | 固定长度数组 | [n]T | 长度固定的元素集合,n 是数组长度,T 是元素类型 |
| 切片 | 动态数组 | []T | 动态大小的数组,T 是元素类型 |
| 映射 | 哈希映射 | map[K]V | 键值对集合,K 是键类型,V 是值类型 |
| 结构体 | 结构体 | struct | 用户定义的数据类型,字段可以为不同类型 |
| 接口 | 空接口 | interface{} | 没有方法集,接受任何类型的数据 |
| 自定义接口 | interface | 定义方法集,任何实现了方法的类型都实现了该接口 | |
| 通道 | 通道 | chan T | 用于并发通信,T 是通道传递的数据类型 |
| 函数 | 函数类型 | func | 函数的类型,定义参数类型和返回值类型 |
| 类型别名 | 类型别名 | type NewType OldType | 给已有类型起别名,NewType 是新类型名,OldType 是旧类型 |
| 自定义类型 | 用户定义类型 | type NewType T | 基于已有类型定义新类型,T 是原类型 |
| 泛型 | 泛型函数/类型 | []T, T any | 允许类型参数,T 可以是任意类型 |
关键点:
- 基本类型:
int,float64,bool,rune,string等。 - 复合类型:如数组(
[n]T)、切片([]T)、映射(map[K]V)等。 - 接口:通过
interface{}定义空接口,任意类型都可以赋值给空接口。 - 类型别名与自定义类型:通过
type关键字为现有类型起别名或定义新类型。 - 泛型:Go 1.18 引入的泛型,通过
[T any]定义类型参数。
这张表格简洁地概述了 Go 语言常见的数据类型及其类型标注,可以帮助你快速了解 Go 的类型系统。