1、defer的词义:“延迟”,“推迟”
在go语言中,defer关键字来延迟一个函数或者方法的执行
1.defer函数或方法:一个函数或方法的执行被延迟了
2.defer的用法:
A:对象.close(),临时文件的删除。。。
文件.open()
defer close()
读或写
B:go语言中关于异常的处理,使用panic()和recover()
panic函数用于引发恐慌,导致程序中断执行
recover函数用于恢复程序的执行,recover()语法要求必须在defer中执行
package main
import "fmt"
func func1() {
fmt.Println("A")
}
func func2() {
fmt.Println("B")
}
func func3() {
fmt.Println("C")
}
func main() {
defer func1()
defer func2()
defer func3()
}
defer中的栈,后进先出。
2、defer和return谁先执行
package main
import "fmt"
func deferFunc() int {
fmt.Println("defer func called...")
return 0
}
func returnFunc() int {
fmt.Println("return func called...")
return 0
}
func returnAndDefer() int {
defer deferFunc()
return returnFunc()
}
func main() {
returnAndDefer()
}
由此可以看出,defer的语句后执行,return的语句先执行。