-
我在循环里用 defer 关闭打开的文件,以为每次循环结束就关了,结果它们全堆到函数返回才一起关,跑到一半就 too many open files,我对着 defer 在函数返回时才执行这个坑排查大半天的复盘
一个让我对 Go 的 defer 到底什么时候执行彻底搞清楚的坑。defer 是个优雅方便的特性(确保资源一定释放)我用得很顺手,可我用错了它的时机——以为 defer file.Close() 会在当前这次循环结束时关闭文件,实际它要等整个函数返回时才关。一个函数循环处理几千个文件,每个 os.Open 后 defer f.Close() 确保关闭,看起来是 Go 推荐的惯用法,可跑到一半 to…- 0
- 0
执行时机
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!

