golang中defer的使用规则

vikings-blog ·
BlockChainMusk
世界那么大,我想去看看!!!
defer规则三的输出结果为2。感谢作者的无私分享
#1
更多评论
**规则三**看的有点晕。 `go` 中的`return`在底层并不是原子操作,而是分两步走的。 - 返回值赋值 - `RET`指令 --- 如果有`defer`语句的话,那么`defer`在两个操作之间执行。 所以示例三的代码,第一步是给返回值赋值, 第二步`defer`,第三步输出 ```go //伪代码 i := 1 defer 开始 i++ return i // 2 ```
#2