Defer
Contexte
Section intitulée « Contexte »L’instruction defer reporte l’exécution d’une fonction jusqu’à ce que la fonction englobante se termine (après un return ou en cas de panic). Les appels defer sont empilés et exécutés en ordre LIFO (dernier entré, premier sorti).
Utilisation typique : fermeture de fichiers, libération de verrous, nettoyage.
Démontrer l’ordre d’exécution des defer et leur utilité.
Code exemple
Section intitulée « Code exemple »package main
import "fmt"
func main() { fmt.Println("début")
// Les defer sont empilés defer fmt.Println("premier defer (exécuté en dernier)") defer fmt.Println("deuxième defer") defer fmt.Println("troisième defer (exécuté en premier)")
fmt.Println("fin de la fonction") // Les defer s'exécutent ici, après le return implicite}débutfin de la fonctiontroisième defer (exécuté en premier)deuxième deferpremier defer (exécuté en dernier)Utilité réelle : fermeture de fichier
Section intitulée « Utilité réelle : fermeture de fichier »f, err := os.Open("fichier.txt")if err != nil { return err}defer f.Close() // fermeture garantie