在Golang中,defer關鍵字用于注冊一個函數調用,該函數會在當前函數執行完成后被執行,無論函數是正常返回還是發生了panic。defer語句通常用于在函數執行結束后釋放資源或執行一些清理操作。
defer關鍵字的語法如下:
func someFunction() {
// 在函數執行結束后執行這個函數調用
defer cleanup()
// 函數的其他邏輯代碼
}
在上面的示例中,cleanup()
函數會在somFunction()
函數執行結束后被調用。defer語句可以出現在函數中的任何位置,但是會按照后進先出(LIFO)的順序執行。
另外,defer語句還支持匿名函數的使用,例如:
func someFunction() {
// 在函數執行結束后執行這個匿名函數
defer func() {
fmt.Println("Deferred function")
}()
// 函數的其他邏輯代碼
}
在這個示例中,匿名函數會在somFunction()
函數執行結束后被調用。defer語句的使用可以幫助程序員避免忘記釋放資源或執行清理操作。