在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
語句,按照逆序的順序執行輸出。