Go 数据类型
在 Go 语言中,数据类型是变量的分类标准,它决定了变量可以存储的数据种类、范围以及可以对变量执行的操作。Go 是一种静态类型语言,这意味着在编译时就需要明确变量的数据类型。Go 语言的数据类型主要分为以下几类:
基本数据类型
布尔类型
bool:值只能是 true 或 false,占 1 个字节。
数值类型
整数类型
int(一般是 32 或 64 位,取决于操作系统)
uint(与 int 具有相同的大小)
uintptr(无符号整型,用于存储指针地址)
有符号整数:int8 (1字节)、int16 (2字节)、int32 (4字节)、int64 (8字节)
无符号整数:uint8 (1字节)、uint16 (2字节)、uint32 (4字节)、uint64 (8字节)
平台相关整数类型
int(一般是 32 或 64 位,取决于操作系统)
uint(与 int 具有相同的大小)
uintptr(无符号整型,用于存储指针地址)
浮点数类型
float32 (4字节,精度约 6-7 位)
float64 (8字节,精度约 15-16 位)
复数类型
complex64 (由两个 float32 组成)
complex128 (由两个 float64 组成)
字符和字符串
字符
byte(等同于 uint8,用于存储 ASCII 字符)
rune(等同于 int32,用于存储 Unicode 字符)
字符串
string(Go 语言字符串是不可变的)
复合数据类型
数组(Array)
var arr [5]int // 长度为 5 的 int 数组
数组长度是固定的,声明时必须指定长度。
切片(Slice)
var s []int // 声明切片,不指定长度
切片是动态数组,可以扩容。
映射(Map)
var m map[string]int // 声明一个键为 string,值为 int 的 map
Go 中的 map 类似于 Python 的字典(dict)
结构体(Struct)
type Person struct {
Name string
Age int
}结构体用于定义自定义数据类型。
指针(Pointer)
var p *int // 声明一个指向 int 类型的指针
Go 中的指针不会进行指针运算。
接口(Interface)
type Shape interface {
Area() float64
}接口定义了一组方法,具体实现由结构体完成。
特殊数据类型
nil:适用于指针、切片、map、通道、接口等类型,表示“空”;
error:用于错误处理,如 errors.New("error message");
func:函数本身也是一种数据类型,可以作为参数或返回值;
总结:Go 语言提供了丰富的数据类型,包括基本类型(整数、浮点数、字符串等)、复合类型(数组、切片、map、结构体等)以及特殊类型(指针、接口、error等),能够满足不同场景的需求。