Go 闭包是什么?循环变量捕获陷阱与正确修复方案
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
闭包 = 函数 + 它引用的外部变量,函数可访问并修改定义时的环境变量,即使外层函数已返回。常见陷阱:循环变量捕获(经典坑)——for i := 0; i < 3; i++ { go func() { println(i) }() } 三个 goroutine 可能都打印 3(Go 1.22 前 i 共享)。修复:循环内复制 i := i 或用参数传值。延迟执行修改外层变量是闭包的常见正确用法(计数器、累加器)。
回复
0 条回复