基本数据类型(原始类型)
布尔型
只有两个值:true 和 false。
特点:直接赋值或通过条件判断赋值(如 var b bool = a > 0)。
整型
包括有符号整型(如 int8, int16, int32, int64)和无符号整型(如 uint8(别名 byte), uint16, uint32, uint64)。
特点:int 和 uint 类型的位数取决于平台(32位系统为32位,64位系统为64位)。无符号整型不能表示负数,范围为 0 到 2^n-1(n 为位数);有符号整型范围为 -2^(n-1) 到 2^(n-1)-1。不同整型类型间不能直接转换,需显式转换(如 int32(a) + int64(b))。
浮点型
包括 float32,float64,complex64,complex128。
特点:默认类型为 float64,精度更高。比较时需用 math.Abs(a-b) < p(p 为精度)代替 ==。complex64,32 位实数和虚数。complex128,64 位实数和虚数。
字符串
UTF-8 编码的不可变字符序列。
特点:修改需转为 []byte 或 []rune(处理中文时用 rune 避免乱码)。拼接用 + 操作符(长拼接需 + 留在上行)。
复合数据类型
指针类型
存储变量地址(如 var p *int = &a)。
特点:Go 支持指针但不支持指针运算(如 p = p + 1 无效)。
数组类型
固定长度(如 [5]int),赋值后长度不可变。
特点:通过 make 创建空间(如 arr := make([]int, 5))。作为参数传递时会复制(值类型)。
结构化类型
自定义数据类型,组合多个字段。
特点:通过 struct 关键字定义(如 type Point struct { X, Y int })。
Channel 类型
协程间通信工具(如 chan int)。
特点:单向通道(如 chan<- int 只发送)。
函数类型
允许开发者将函数视为类型(如 func add(x, y int) int { return x + y })。
特点:可作为变量、参数、返回值。
切片类型
变长序列(如 []int),基于数组实现。
特点:通过 make 创建(如 slice := make([]int, 5, 10))。作为参数传递时复制指针(引用类型)。
接口类型
方法集合(如 type Writer interface { Write(p []byte) (n int, err error) })。
特点:隐式实现(实现方法即实现接口)。
Map 类型
键值对集合(如 map[string]int)。
特点:通过 make 创建(如 m := make(map[string]int))。