defer一般用于在函数结束时执行必要的处理工作。例如,关闭文件描述符,关闭网络连接等等。
函数中可以定义多个defer,执行的时候按照先进后出的顺序。
defer定义的语句,即使遇到panic,也会执行。
下面简单举例说明用法:
package main
import @H_404_12@( "fmt" ) func main@H_404_12@() { defer func@H_404_12@(){ fmt.Println@H_404_12@("defer end...") }@H_404_12@() fmt.Println@H_404_12@("start...") panic@H_404_12@("test here") }
ouput:
原文链接:https://www.f2er.com/go/187452.htmlstart…
defer end…
panic: test heregoroutine 1 [running]: main.main() D:/work/go_exercise/t.go:25 +0x104