defer語句用于在函數執行完成后延遲執行某個語句,通常用于資源釋放、文件關閉等操作。在函數執行時,defer語句會被添加到一個延遲調用棧中,當函數執行完成后,defer語句會按照后進先出的順序執行,即最后一個defer語句會最先執行。
defer語句的執行時機是在函數執行完畢后,但在函數返回之前執行。因此,即使函數中途出現錯誤或者函數被提前返回,defer語句仍會被執行。
下面是一個示例代碼,演示了defer語句的工作原理:
package main
import "fmt"
func main() {
fmt.Println("Start")
defer fmt.Println("Deferred statement")
fmt.Println("End")
}
在上面的代碼中,"Deferred statement"會在"End"之后輸出,因為defer語句會在函數執行完畢后執行。defer語句可以用于延遲釋放資源、關閉文件等操作,可以幫助簡化代碼并避免忘記執行必要的清理操作。