We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 701c4fc commit ca0c426Copy full SHA for ca0c426
1.14/defer.md
@@ -1,3 +1,43 @@
1
# 1.14 defer
2
3
-TODO
+在 Go 1.14 中,增加了一种新的 defer 实现:open coded defer。当函数内 defer 不超过 8 个时,则会使用这种实现。
4
+
5
+```go
6
+package main
7
8
+import "fmt"
9
10
+var i = 100
11
12
+func main() {
13
+ if i == 0 {
14
+ defer fmt.Println("1")
15
+ }
16
17
+ if i == 1 {
18
+ defer fmt.Println("2")
19
20
21
+ if i == 2 {
22
+ defer fmt.Println("3")
23
24
25
+ if i == 3 {
26
+ defer fmt.Println("4")
27
28
29
+ if i == 4 {
30
+ defer fmt.Println("5")
31
32
33
+ if i == 5 {
34
+ defer fmt.Println("6")
35
36
+}
37
38
+```
39
40
+可以分析上面的代码生成的汇编来理解这个新版的 open coded defer 到底是怎么实现的:
41
42
43
0 commit comments