Go defer+闭包的一个小坑
Go defer+闭包的一个小坑
今天在写代码的时候,发现一个奇怪的事情,在将无效的逻辑简化之后,可以总结出这样的一段代码:
1 |
|
先让我们想一想,这段代码的输出是什么?我的之前的理解中,显然,这是问 defer 的执行顺序问题,那太简单了,毫无疑问应该输出:
1 |
|
然而,真的执行这段代码之后,我惊讶的发现,真实的输出是:
1 |
|
这就有些让我费解了,正好借着这个机会,我对 defer& 闭包做了一次系统的整理。
defer
预计算
Go 官方文档对此由如下阐述
to be finished
Go defer+闭包的一个小坑
https://hyphennn.com/2024/06/07/go-defer-closure/