Go 语言必备知识点
基础语法
-
变量声明与初始化
var
关键字声明- 短变量声明
:=
- 零值概念
- 类型推断
-
基本数据类型
- 整型:
int
,int8
,int16
,int32
,int64
- 无符号整型:
uint
,uint8
,uint16
,uint32
,uint64
- 浮点型:
float32
,float64
- 布尔型:
bool
- 字符串:
string
- 字节:
byte
(uint8 别名) - 符文:
rune
(int32 别名)
- 整型:
-
复合数据类型
- 数组:
[n]T
- 切片:
[]T
(动态数组) - 映射:
map[K]V
- 结构体:
struct
- 指针:
*T
- 数组:
-
控制结构
if
/else
for
循环 (Go 只有for
循环)switch
语句defer
延迟执行goto
(不推荐使用)
函数
- 函数声明:
func name(params) returnType { ... }
- 多返回值
- 命名返回值
- 匿名函数和闭包
- 可变参数函数:
func sum(nums ...int) int
面向对象
-
方法
- 值接收者和指针接收者
- 方法集概念
-
接口
- 隐式实现
- 空接口
interface{}
(Go 1.18+ 可用any
) - 类型断言和类型开关
-
结构体
- 嵌入和组合
- 字段标签
并发编程
-
Goroutine
go
关键字启动协程- Goroutine 调度
-
Channel
- 创建:
make(chan T)
- 缓冲和非缓冲通道
- 通道操作:
<-
select
语句- 关闭通道:
close()
- 创建:
-
同步原语
sync.Mutex
和sync.RWMutex
sync.WaitGroup
sync.Once
sync.Pool
sync.Cond
错误处理
- 错误接口:
error
- 错误创建:
errors.New()
,fmt.Errorf()
- 错误检查惯用法:
if err != nil
- 自定义错误类型
- panic 和 recover 机制
标准库重要包
fmt
- 格式化I/Oos
- 操作系统功能io
/ioutil
- I/O操作net/http
- HTTP客户端和服务器encoding/json
- JSON处理time
- 时间操作strconv
- 字符串转换sync
- 同步原语context
- 上下文管理testing
- 测试工具
高级特性
-
反射
reflect
包Type
和Value
-
unsafe 包
- 指针操作
- 内存布局
-
cgo
- 与C语言交互
-
Go Modules
- 依赖管理
go.mod
和go.sum
-
泛型 (Go 1.18+)
- 类型参数
- 约束接口
最佳实践
- 代码格式化:
gofmt
- 命名约定
- 错误处理模式
- 并发模式
- Worker pools
- Fan-in/Fan-out
- 性能优化
- 基准测试
- 性能分析
- 内存管理
工具链
go build
- 编译包和依赖go run
- 编译并运行go test
- 运行测试go mod
- 模块维护go fmt
- 格式化代码go vet
- 静态分析go doc
- 文档查看go get
- 添加依赖
这些知识点构成了Go语言的核心内容,掌握它们可以帮助你高效地使用Go进行开发。