golang defer的履行顺序是甚么
在Go语言中,defer
语句用于注册延迟调用,延迟调用会在函数履行终了后被履行,不管函数是正常返回或产生异常。
当有多个defer
语句时,它们的履行顺序是逆序的,即最后注册的defer
语句会最早履行,最早注册的defer
语句会最后履行。
下面是一个示例:
package main
import "fmt"
func main() {
defer fmt.Println("defer 1")
defer fmt.Println("defer 2")
defer fmt.Println("defer 3")
fmt.Println("main")
}
输出结果为:
main
defer 3
defer 2
defer 1
可以看到,main
函数中的代码首先履行,然后顺次履行了三个defer
语句,依照逆序的顺序履行输出。
TOP