Go 闭包与循环变量陷阱
为什么在 for 循环里启动 goroutine 时,直接使用循环变量 i 容易出问题?为什么常见写法是 go func(n int) {}(i)?
Notes
这些内容主要是我和 AI 对话学习后的整理记录,偏个人学习笔记,未做正式出版,仅供个人学习参考。
共 19 篇 · 分类 6 个 · 标签 68 个 · 最近更新 2026-04-21
为什么在 for 循环里启动 goroutine 时,直接使用循环变量 i 容易出问题?为什么常见写法是 go func(n int) {}(i)?
HTTP 服务的本质是什么?为什么要引入框架?net/http、Gin、Hertz、Kitex 各自解决什么问题?
Go 为什么会被设计出来?它解决了什么问题?编译快、并发友好这些特性背后的本质是什么?
多个 goroutine 同时修改同一份数据时,Go 应该怎么处理?什么时候用锁,什么时候用 channel?
Hertz 是什么?适合什么场景?它和 net/http、Gin、Kitex 分别是什么关系?
如何用 Java 实现线程安全的单例?不同写法分别适合什么场景?
刚开始使用 LazyVim 时,保存文件、创建文件、格式化代码、撤销操作、切换窗口这些高频动作应该怎么做?
关系型数据库最核心的基础知识有哪些?如果只想建立正确心智模型,应该先抓住哪些主线?
代码格式化到底解决什么问题?团队一般怎样把格式化、Lint、测试和 CI 组合成一套工程质量规范?
正则表达式是什么?常见语法有哪些?写正则时最容易踩哪些坑?
网络代理的工作原理是什么?为什么有时 curl 能走代理,但 ping 不一定能?
Git 所说的“快照”到底是什么意思?为什么 Git 不像传统版本控制那样主要存差异?这样不会很浪费空间吗?
验证新的 Markdown 处理管道:Shiki 代码高亮、TOC 目录、阅读时间、标题锚点
梳理 Java 后端项目中 Service 层的职责边界、依赖方向和常见反模式。
记录 OpenClaw 场景下,如何把用户意图稳定分发到不同 Skill 的路由方案。
记录 Spring 事务在自调用、异常处理、传播行为上的几个高频踩坑点。
记录 Docker 容器日志无限增长的治理方案,包含 daemon 配置与排查思路。
针对突发流量下 429 过多的问题,整理一套可执行的限流排查与调参流程。
从任务拆分、上下文传递到结果合并,整理一套最小可用的多 Agent 编排流程。
更多学习笔记持续整理中