golang笔记

收录了 1 篇文章 · 0 人关注

  • 使用 defer 时可能遇到的若干陷阱

    go 的 defer 语句对改善代码可读性起了很大作用。但是,某些情况下 defer 的行为很容易引起混淆,并且难以快速理清。尽管作者已经使用 go 两年多了,依然会被 defer 弄得挠头不已。我的计划是把过去曾困惑过我的一系列行为汇总起来,作为对自己的警示。 ## defer 的作用域是一个函数,不是一个语句块 一个变量只存在于一个语句块的作用域内。 defer 语句所在的语句块只会在函数返回时执行。我不清楚背后的原理,但是,如果你在一个循环里面先分配资源,再用 defer 回收...