Golang数据类型

程序员C 1月前 ⋅ 75 阅读

基本数据类型(原始类型)

布尔型

只有两个值: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))。