La fonction defer est utilisée dans le langage Go pour retarder l'exécution d'un appel de fonction jusqu'au retour de la fonction, en l'appelant dans l'ordre du dernier entré, premier sorti (LIFO). Ses utilisations incluent la libération de ressources, la journalisation et la récupération des exceptions. La dernière fonction différée sera appelée avant la première fonction différée.
La séquence d'exécution et le but de la fonction defer en langage Go
fonction defer
defer
est un mot-clé unique en langage Go, qui peut différer les appels de fonction vers Exécuté avant la fonction revient. Lorsque la fonction revient, les fonctions différées sont appelées dans l'ordre du dernier entré, premier sorti (LIFO). defer
是 Go 语言中一个独特的关键字,它可以将函数调用推迟到函数返回之前执行。当函数返回时,被延迟的函数按后进先出 (LIFO) 的顺序调用。
defer 的用途
defer
defer
est principalement utilisé dans les scénarios suivants : Récupération d'exception : Utilisé pour gérer les exceptions et effectuer des opérations de nettoyage. L'ordre d'exécution de
defer
Les appels de fonction retardés sont exécutés dans l'ordre du dernier entré, premier sorti au retour de la fonction. Cela signifie que la dernière fonction différée sera appelée avant la première fonction différée.Cas pratique : Release file handle
package main import ( "fmt" "os" ) func main() { // defer 语句将函数 os.File.Close() 调用推迟到 main() 函数返回之前执行。 f, err := os.Open("myfile.txt") if err != nil { fmt.Println(err) return } defer f.Close() // 使用 defer 可以确保文件句柄在函数返回时始终被关闭。 fmt.Println("File opened successfully.") }
File opened successfully.
Autres exemples :
Logging :
defer fmt.Println("Function completed.")
func safeOperation() (result, err error) { // ...省略业务代码... if err != nil { // 如果操作失败,记录错误并恢复。 defer func() { fmt.Println("Operation failed with error:", err) }() return nil, err } // 操作成功,返回结果。 return result, nil }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!