Sobes.tech
Middle

Qu'est-ce que defer et à quoi sert-il ? Dans quel ordre les appels à defer sont-ils exécutés s'il y en a plusieurs dans une même fonction ?

sobes.tech IA

Réponse de l'IA

En Go, le mot-clé defer est utilisé pour appeler une fonction de manière différée : elle sera exécutée après la fin de la fonction englobante, mais avant son retour. Cela est pratique pour libérer des ressources, fermer des fichiers, déverrouiller des mutex et d'autres opérations de nettoyage.

Si plusieurs appels à defer sont présents dans une fonction, ils s'exécutent dans l'ordre inverse de leur déclaration (ordre de pile). Autrement dit, le dernier defer déclaré sera exécuté en premier.

Exemple :

func exemple() {
    defer fmt.Println("Premier defer")
    defer fmt.Println("Deuxième defer")
    fmt.Println("Dans le corps de la fonction")
}
// La sortie sera :
// Dans le corps de la fonction
// Deuxième defer
// Premier defer