跳至内容

切片不是动态数组:底层数组共享、append 与内存滞留

从底层数组共享、容量控制和 append 扩容出发,解释 Go 切片最常见的数据污染、内存滞留与并发问题。

更多 →

2026年7月5日

Map 实战陷阱:并发访问、迭代顺序与复合类型 Key

梳理 Go map 在零值、复合值更新、遍历顺序、并发访问和 Key 设计上的高频陷阱。

更多 →

2026年7月4日

接口的隐形规则:方法集、nil 陷阱与小接口设计

从动态类型、方法集和隐式实现出发,解释 Go 接口的 nil 陷阱、指针接收者差异与 API 设计原则。

更多 →

2026年7月3日

泛型的正确打开方式:类型集、约束与何时不要使用泛型

跳过泛型语法入门,直接讨论类型集、近似约束、类型推断,以及泛型在业务代码中的适用边界。

更多 →

2026年7月2日

错误不是字符串:errors.Is、As、Join 与业务错误建模

建立可判断、可追踪、不过度泄露实现细节的 Go 错误模型,正确使用 errors.Is、As、Join 与 %w。

更多 →

2026年7月1日

资源生命周期管理:defer、Close、panic 与 recover 的边界

围绕资源所有权解释 defer 的求值与执行规则、Close 错误、循环清理,以及 panic/recover 应有的使用边界。

更多 →

2026年6月30日

每个 Goroutine 都要有归宿:生命周期、泄漏与退出协议

把 Goroutine 当作需要管理的运行中资源,系统梳理阻塞发送、永久接收、失控后台任务等泄漏模式及退出设计。

更多 →

2026年6月29日

Channel 深水区:关闭原则、缓冲语义与 select 陷阱

从所有权和同步语义出发,理解 Channel 的关闭、缓冲、nil 状态与 select 行为,避免泄漏和偶发 panic。

更多 →

2026年6月28日

Context 实战:超时、取消、CancelCause 与错误传播

从调用树而不是参数模板理解 Context,正确传播截止时间、取消原因和请求级元数据。

更多 →

2026年6月27日

sync 工具箱:Mutex、RWMutex、Once、Cond、Pool 怎么选

不背 API,直接从需要保护的不变量出发,理解 Go sync 包各同步原语的适用场景和误用成本。

更多 →

2026年6月26日