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
Sign up and earn $1000 a day ⋙

Leave a Comment

如何在 Golang 中使用常數

如何在 Golang 中使用常數

Golang 中的 Constant 或 Const 是什麼?以下是關於在 Go 中使用常數需要了解的內容。

Golang 中的 Volatile 函數

Golang 中的 Volatile 函數

Go 中的可變函數可讓您向函數傳遞可變數量的參數。以下是您需要了解的有關 Golang 中的易失性函數的所有資訊。

Golang 中的命名回傳參數

Golang 中的命名回傳參數

在 Golang 中,命名回傳參數通常被稱為命名參數。 Golang 允許在函數簽章或定義中命名函數的傳回參數或結果。

Go 中的關鍵字

Go 中的關鍵字

關鍵字-關鍵字是語言中用於某些內在過程或代表某些預定義動作的字詞。以下是您需要了解的有關 Golang 中的關鍵字的知識。

Golang中的資料類型

Golang中的資料類型

資料類型指定有效的 Go 變數可以包含的資料類型。 Go語言中,類型分為以下四類:

Golang 中的函數參數

Golang 中的函數參數

Go 支援兩種主要的傳遞參數的方式:按值傳遞和按引用傳遞。 Go 預設使用按值傳遞。

Golang中傳回多個值的函數

Golang中傳回多個值的函數

在Go語言中,允許使用return語句從函數傳回多個值。換句話說,在函數中,一個return語句可以傳回多個值。

Go 中的 Switch 語句

Go 中的 Switch 語句

Golang 和大多數其他程式語言一樣,有 switch 語句。以下是如何在 Golang 中使用 switch 語句。

在 Golang 中使用選擇語句時需要了解的案例

在 Golang 中使用選擇語句時需要了解的案例

在本文中,我們將學習如何使用預設情況來避免死鎖。但首先,讓我們先了解一下使用 Golang select 指令時出現死鎖的情況是什麼?

Golang 中的匿名結構和字段

Golang 中的匿名結構和字段

Golang 中的匿名結構是沒有名稱的一次性臨時結構,而匿名欄位允許嵌入未命名的欄位。

如何在 Golang 中使用 Rune

如何在 Golang 中使用 Rune

Golang 中的 Runes 是什麼?如何在 Golang 中使用 Rune?文章會告訴你答案。

如何在 Golang 中使用運算符

如何在 Golang 中使用運算符

運算符允許我們對操作數執行不同類型的操作。在 Go語言中,運算子可以根據其不同的功能進行分類。

Golang 中的 Void 標識符

Golang 中的 Void 標識符

Golang 中的 _(底線)稱為空白標識符。標識符是程式組件的使用者定義名稱,用於識別目的。

如何用 Golang 創建基本程序

如何用 Golang 創建基本程序

你好世界!是任何程式語言中的第一個基本程式。您可以按照以下步驟使用 Golang 編寫第一個程式。

如何在 Windows 上安裝 Go

如何在 Windows 上安裝 Go

Golang 可以輕鬆安裝在 Windows 上。以下是在 Windows 上安裝 Golang 的詳細逐步指南。

OpenAI推出新工具幫助開發人員建構AI代理

OpenAI推出新工具幫助開發人員建構AI代理

OpenAI 將 AI 代理視為人工智慧產業的未來,並承認使用現有工具建立強大的「工業級」代理非常困難。

Pocket Casts:最佳播客應用程式現已在桌面上免費提供

Pocket Casts:最佳播客應用程式現已在桌面上免費提供

對於播客迷來說這是一個好消息。 Pocket Casts 目前可在網路上以及透過 Mac 和 Windows 應用程式免費使用。

查看藍色幽靈登陸器在月球表面的首批影像

查看藍色幽靈登陸器在月球表面的首批影像

隨著藍色幽靈登陸器本週末抵達月球,世界各地的天文學家正熱切期待一系列令人驚嘆的新圖像,這些圖像將為我們星球的天然衛星提供真正身臨其境的、甚至是前所未有的觀察。

如何在 Golang 中使用常數

如何在 Golang 中使用常數

Golang 中的 Constant 或 Const 是什麼?以下是關於在 Go 中使用常數需要了解的內容。

如何找回被駭客入侵的 Facebook 密碼和遺失的註冊信箱

如何找回被駭客入侵的 Facebook 密碼和遺失的註冊信箱

使用 Facebook 時,有時您的帳號會被駭客入侵、遺失密碼,甚至遺失您的 Facebook 註冊電子郵件。那麼,當您遺失密碼和註冊電子郵件時,如何恢復您的 Facebook 帳號?

如何偽造 iPhone 訊息、創建 Messenger 訊息

如何偽造 iPhone 訊息、創建 Messenger 訊息

當我們可以使用虛假訊息創建應用程式或使用一些完全免費創建虛假訊息的網站時,製作虛假訊息來欺騙人們非常簡單。

終極進化代碼:最新賽亞人以及如何輸入代碼

終極進化代碼:最新賽亞人以及如何輸入代碼

代碼終極進化賽賽亞人為玩家提供了一系列有吸引力的獎勵,並感謝他們在遊戲初期的鑽石、經驗、經驗膠囊、黃金、角色碎片等

如何在 Instagram 個人檔案中編輯預覽照片

如何在 Instagram 個人檔案中編輯預覽照片

Instagram 最近將個人資料網格佈局更改為 4:5 垂直預覽。並且用戶可以自訂預覽圖像以聚焦他們想要的內容。

代號:西遊記 最新 2025年4月25日

代號:西遊記 最新 2025年4月25日

Code Monkey King 為玩家提供一系列誘人的獎勵,例如貨幣、5 星隨機角色碎片、九轉金丹、隨機資源包

使用 Microsoft Word 的 11 種創意方法

使用 Microsoft Word 的 11 種創意方法

當您想到 Microsoft Word 時,您會想到什麼?文件?恢復?雖然這些肯定是它的主要用途,但 Word 也是一個令人驚訝的多功能工具,可用於各種創意專案。

如何在 WhatsApp 狀態中標記好友

如何在 WhatsApp 狀態中標記好友

WhatsApp 已將 WhatsApp 狀態中標記好友的功能更新至 Android 和 iOS 版本的所有帳號。

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

喜歡咖啡想嘗試製作自己的咖啡雞尾酒嗎?因此以下的文章將為您總結製作簡單、美味且誘人的咖啡雞尾酒的食譜。

《死神》:外貌變化最多的角色

《死神》:外貌變化最多的角色

雖然《死神》系列中有很多角色被認為是可識別的,但這並不一定意味著他們從頭到尾都有相同的外觀。以下是外表發生顯著變化的《死神》角色。

如何優化 Google Chrome 以實現超快速啟動

如何優化 Google Chrome 以實現超快速啟動

我們都遇到過這種情況:點擊 Chrome 圖標,然後等待瀏覽器啟動。等待主頁加載似乎永遠是令人沮喪的。

如何在三星手機上用照片製作貼紙

如何在三星手機上用照片製作貼紙

在某些三星 Galaxy 手機上,有一個從相簿中的照​​片創建貼紙的選項,允許用戶自由創建用於資訊中的貼紙。