Golang 中的 Defer 關鍵字

在 Go 中,defer 語句會延遲函數或方法或匿名方法的執行,直到附近的函數傳回。換句話說,延遲函數或方法的參數會立即被評估,但它們直到附近的函數返回時才會執行。您可以使用 defer 關鍵字建立延遲方法、函數或匿名函數。

Golang 中的 Defer 關鍵字

句法:

// Hàm
defer func func_name(parameter_list Type)return_type{
// Code
}

// Phương thức
defer func (receiver Type) method_name(parameter_list){
// Code
}

defer func (parameter_list)(return_type){
// code
}()

重要提示:

  • Go 語言中,同一個程式中允許有多個 defer 語句,並且依照 LIFO(後進先出)的順序執行,如範例 2 所示。
  • 在 defer 語句中,參數是在執行 defer 語句時進行評估的,而不是在呼叫該語句時。
  • Defer 語句通常用於確保在需要結束時關閉文件,或關閉通道,或捕獲程式中的問題。

現在讓我們來看一個例子以便更好地理解。

例 1:

// Chương trình Go minh họa
// khái niệm của lệnh defer
package main

import "fmt"

// Các hàm
func mul(a1, a2 int) int {

	res := a1 * a2
	fmt.Println("Result: ", res)
	return 0
}

func show() {
	fmt.Println("Hello!, Quantrimang.com")
}

// Hàm chính
func main() {

	// Gọi hàm mul() 
	// Tại đây hàm mul hoạt động
	// như một hàm bình thường
	mul(23, 45)

	// Gọi hàm mul()
	// Dùng từ khóa defer 
	// Hàm the mul() 
	// là hàm defer
	defer mul(23, 56)

	// Gọi hàm show() 
	show()
}

結果:

Result:  1035
Hello!, Quantrimang.com
Result:  1288

說明:在上面的例子中,我們有兩個函數,分別名為mul()show()show()函數通常在main()函數中調用,而mul()函數則以兩種不同的方式調用:

  • 首先,我們正常呼叫 mul 函數(不帶 defer 關鍵字),即 mul(23, 45),它在函數被呼叫時執行(輸出:結果:1035)。
  • 其次,我們使用 defer 關鍵字將 mul() 函數呼叫為延遲函數,即 defer mul(23, 56),並且當所有周圍方法返回時執行(輸出:結果:1288)。

範例 2:

// Minh họa chương trình Go
// dùng nhiều lệnh defer, để minh họa chính sách LIFO 
package main

import "fmt"

// Các hàm
func add(a1, a2 int) int {
	res := a1 + a2
	fmt.Println("Result: ", res)
	return 0
}

// Hàm chính
func main() {

	fmt.Println("Start")

	// Nhiều lệnh defer
	// Triển khai theo thứ tự LIFO 
	defer fmt.Println("End")
	defer add(34, 56)
	defer add(10, 10)
}

結果:

Start
Result:  20
Result:  90
End

留下評論

如何修復 Microsoft Teams 錯誤代碼 2603 (2026)

如何修復 Microsoft Teams 錯誤代碼 2603 (2026)

遇到 Microsoft Teams 錯誤代碼 2603 而煩惱?我們的逐步指南可協助您快速解決問題,修復最新 2026 更新中的安裝失敗、當機等問題。適用於所有用戶!

如何修復 Microsoft Teams 錯誤 K 安全

如何修復 Microsoft Teams 錯誤 K 安全

遇到 Microsoft Teams 安全錯誤 K 時遇到問題?按照我們的逐步指南即可快速解決—無需任何技術知識。立即恢復流暢協作!

解決 Microsoft Teams 錯誤 N 網路

解決 Microsoft Teams 錯誤 N 網路

還在為 Microsoft Teams 的「錯誤 N」網路問題苦惱嗎?取得解決 Microsoft Teams「錯誤 N」網路問題的逐步指南,從快速重新啟動到進階故障排除,應有盡有。立即恢復流暢的通話和會議體驗!

一步一步教你如何在會議開始前建立分組討論室

一步一步教你如何在會議開始前建立分組討論室

透過這份詳盡的逐步指南,即可在 Zoom 會議開始前輕鬆建立分組討論室,實現無縫協作。預先分配與會者,最大程度提升參與。本指南是教育工作者、團隊和領導者的理想選擇。

解決 Microsoft Teams 中「Teams 資料夾在哪裡」的錯誤

解決 Microsoft Teams 中「Teams 資料夾在哪裡」的錯誤

還在為 Microsoft Teams 中令人抓狂的「Teams 資料夾在哪裡」錯誤而煩惱嗎?我們提供經過驗證的逐步故障排除方法,協助您快速解決問題,恢復流暢的團隊合作。包含最新方法!

解決 Microsoft Teams Mac 版錯誤鑰匙圈問題

解決 Microsoft Teams Mac 版錯誤鑰匙圈問題

還在為 Microsoft Teams Mac 版鑰匙圈錯誤而煩惱嗎?我們提供經過驗證的 macOS 逐步故障排除方案,協助您恢復流暢協作。快速解決方案就在眼前!

如何解決 Microsoft Teams 麥克風聲音模糊或無聲音的問題

如何解決 Microsoft Teams 麥克風聲音模糊或無聲音的問題

還在為 Microsoft Teams 麥克風聲音模糊或無聲而煩惱嗎?了解如何透過快速有效的步驟解決 Microsoft Teams 麥克風問題。清晰的音訊體驗,等你來體驗!

解決公共 Wi-Fi 上的 Microsoft Teams 網路錯誤

解決公共 Wi-Fi 上的 Microsoft Teams 網路錯誤

在公共 Wi-Fi 環境下遇到 Microsoft Teams 網路錯誤?立即取得 VPN 調整、連接埠檢查和快取清除等快速修復方法,恢復通話和會議的流暢運作。逐步指南助您快速解決問題。

透過直接連結解決 Microsoft Teams 加入會議錯誤

透過直接連結解決 Microsoft Teams 加入會議錯誤

遇到 Microsoft Teams 加入會議錯誤?點擊連結查看已驗證的解決方法。快速修復,輕鬆加入會議—無需任何技術技能!

如何運用 Microsoft Teams Copilot 實現 AI 賦能的生產力

如何運用 Microsoft Teams Copilot 實現 AI 賦能的生產力

了解如何使用 Microsoft Teams Copilot 提升 AI 賦能的生產力。逐步指南、關鍵功能和技巧,幫助您輕鬆革新會議、聊天和任務。立即開啟更聰明的協作!