go强调类型安全与明确性,不支持隐式转换;基础类型包括整数、浮点数、bool和string;复合类型有数组、切片、map和struct;变量声明支持显式与推导类型;可通过type定义别名或新类型以增强语义。

Go 的数据类型和变量设计强调简洁、明确和安全。它不支持隐式类型转换,所有变量必须有确定的类型,这在编译期就能捕获大量潜在错误。
基础数据类型:数值、布尔与字符串
Go 提供了明确区分的内置类型:
- 整数:分为有符号(int8、int16、int32、int64、int)和无符号(uint8、uint16、uint32、uint64、uint),其中 int 和 uint 的位宽由运行平台决定(通常是 64 位)
- 浮点数:float32 和 float64,推荐优先使用 float64 以避免精度陷阱
- 布尔值:仅 bool 类型,值为 true 或 false,不与整数互转
- 字符串:string 是只读字节序列(UTF-8 编码),用双引号定义,支持 Unicode,但不可通过索引直接修改内容
复合与引用类型:数组、切片、映射与结构体
Go 区分值类型和引用类型,这对理解赋值和函数传参行为至关重要:
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
- 数组:长度固定,类型包含长度信息(如 [3]int 和 [4]int 是不同类型),赋值时复制全部元素
- 切片:动态长度的视图,底层指向数组,包含指针、长度(len)和容量(cap)。常用 make([]int, 3) 或字面量 []int{1,2,3} 创建
- 映射:哈希表实现,类型为 map[K]V,必须用 make 或字面量初始化后才能写入,否则 panic
- 结构体:聚合命名字段的值类型,支持嵌入(匿名字段)实现轻量组合,不支持继承
变量声明与类型推导:简洁但不牺牲明确性
Go 支持多种声明方式,核心原则是“变量必须初始化,类型尽量显式或可推导”:
立即学习“go语言免费学习笔记(深入)”;
- 使用 var name type = value 声明并初始化,类型可省略(如 var x = 42 → 推导为 int)
- 短变量声明 name := value 只能在函数内使用,类型完全由右侧值推导(s := "hello" → string)
- 批量声明可提高可读性:var ( a = 1; b string = "x" )
- 零值(zero value)自动赋予未显式初始化的变量:数值为 0,布尔为 false,字符串为 "",指针/接口/切片/映射/通道为 nil
类型别名与自定义类型:增强语义与封装
Go 鼓励用类型系统表达业务意图,而非仅复用基础类型:
- 类型别名(type MyInt = int):两个名称完全等价,只是同义词
- 新类型(type UserID int):创建独立类型,即使底层相同也不能直接赋值,需显式转换(UserID(123)),可用于定义方法、避免误用
- 为自定义类型添加方法,是 Go 实现面向对象逻辑的主要方式(无类、无继承,靠组合与方法集)









