golang defer語句簡單解析
defer
下面舉例說明了defer語句的作用:
package main import "fmt" func main() { i := 10 defer incr(i) defer incr2(i) defer incr3(i) } func incr(i int){ j := i -1 fmt.Println(j) } func incr2(i int){ j := i -2 fmt.Println(j) } func incr3(i int){ j := i -3 fmt.Println(j) }
輸出結果:
GOROOT=C:\Go #gosetup GOPATH=C:\Users\DELL\go #gosetup C:\Go\bin\go.exe build -o C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe C:/Users/DELL/ActiveGo/src/spider/main/cmpl.go #gosetup "C:\Program Files\JetBrains\GoLand 2018.3.2\bin\runnerw64.exe" C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe #gosetup 7 8 9 Process finished with exit code 0
很明顯 defer語句的執行順序是反的。這種語法給我們的資源關閉提供了很好的幫助。
比如流的關閉啊,檔案的關閉啊等等。