Inspired By:
切忌在循环中使用 defer
,除非你清楚自己在做什么,因为它们的执行结果常常会出人意料。在循环中的延迟函数会在函数结束过后运行,而不是每次 for 循环结束之后。这些延迟函数会不停地堆积到延迟调用栈中,最终可能会导致一些不可预知的问题。
- 不使用
defer
,直接在末尾调用*.Close()
- 将任务转交给另一个函数然后在里面使用
defer
,在下面这种情况下,延迟函数会在每次匿名函数执行结束后执行。
Inspired By:
切忌在循环中使用 defer
,除非你清楚自己在做什么,因为它们的执行结果常常会出人意料。在循环中的延迟函数会在函数结束过后运行,而不是每次 for 循环结束之后。这些延迟函数会不停地堆积到延迟调用栈中,最终可能会导致一些不可预知的问题。
defer
,直接在末尾调用*.Close()
defer
,在下面这种情况下,延迟函数会在每次匿名函数执行结束后执行。