## defer
延迟调用,函数结束前执行
先进后出
异常发生后,前面的defer语句依旧会执行
常作 资源清理、异常处理
package main
import "fmt"
func test(x int){
a := 1 / x
a += a
}
func main(){
fmt.Println("1111111")
test(0)
fmt.Println("2222222")
}
=======
1111111
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.test(...)
E:/Code/Go/defer/main.go:6
func main(){
defer fmt.Println("0000000")
defer fmt.Println("1111111")
test(0)
defer fmt.Println("2222222")
}
===============
1111111
0000000
panic: runtime error: integer divide by zero
func main(){
defer fmt.Println("0000000")
defer fmt.Println("1111111")
defer test(0)
defer fmt.Println("2222222")
}
==========
2222222
1111111
0000000
panic: runtime error: integer divide by zero