
书: https://pan.baidu.com/s/15VfTw9eJ2MoiHktwswP0gw?pwd=tq5x
笔记如下:
- “Go语言的简洁性体现在其‘少即是多’的设计哲学上。”
- “通过
go mod init
命令初始化模块,是Go项目依赖管理的起点。” - “
context
包的核心作用是跨Goroutine传递截止时间、取消信号和请求作用域值。” - “Gin框架的路由基于HTTP方法和路径匹配,支持分组路由(Group)中间件。”
- “Go的接口是隐式实现的,只要类型实现了接口定义的方法,即视为满足该接口。”
- “
sync.WaitGroup
用于等待一组Goroutine完成,其Add
、Done
和Wait
方法需严格配对。” - “标准库
encoding/json
的Marshal
和Unmarshal
函数实现了结构体与JSON的双向转换。” - “错误处理应遵循‘错误即值’原则,通过多返回值显式传递错误,而非异常机制。”
- “
io.Reader
和io.Writer
接口是Go中流式数据处理的基础抽象。” - “使用
go test -v
运行单元测试,结合Table-Driven Tests
可提高测试覆盖率。” - “
pprof
工具能可视化分析程序的CPU占用、内存分配和Goroutine阻塞问题。” - “Go的并发模型基于‘通过通信共享内存’(CSP),而非传统的锁机制。”
- “
chan
类型分为无缓冲和有缓冲通道,前者要求收发双方同步就绪。” - “反射(reflect包)虽强大但性能损耗高,应优先考虑类型安全的替代方案。”
- “
go build -ldflags
支持注入编译时变量,如版本号和Git提交哈希。” - “标准库
net/http
的Server
结构体提供了灵活的HTTP服务配置选项。” - “
go generate
命令可自动化生成代码,常用于减少重复模板代码。” - “依赖注入(DI)通过构造函数或选项模式实现,提升代码可测试性。”
- “Go的逃逸分析决定变量分配在栈还是堆上,可通过
go build -gcflags
调试。” - “
go doc
命令能快速查看包或函数的文档,促进代码即文档的实践。”