Skip to content

Go type

类型分类类型名称描述
基本数据类型bool布尔类型,值为 truefalse
int有符号整数,平台相关(通常为 32 位或 64 位)
int88 位有符号整数
int1616 位有符号整数
int3232 位有符号整数
int6464 位有符号整数
uint无符号整数,平台相关(通常为 32 位或 64 位)
uint88 位无符号整数
uint1616 位无符号整数
uint3232 位无符号整数
uint6464 位无符号整数
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无符号整数,大小依平台而定。
浮点型单精度浮点型float3232 位浮点数
双精度浮点型float6464 位浮点数
布尔型布尔值booltruefalse
字符型Unicode字符rune(等价于 int3232 位字符,表示单个 Unicode 字符
ASCII 字符byte(等价于 uint88 位无符号整数,通常表示 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 的类型系统。