Comprendre la Directive defer en Go (Golang)
Qu’est-ce que defer en Go ?
Passons maintenant à un concept très utile en Go : la directive defer
. La directive defer
permet de programmer l’exécution d’une fonction pour après que la fonction englobante ait terminé son exécution. C’est comme dire à votre programme : "N’oublie pas de faire ceci quand tu auras fini tout le reste."
Mais pourquoi utiliser defer
? Imaginez que vous ouvrez une porte pour entrer dans une pièce. Vous pouvez vous assurer que la porte sera toujours fermée après votre passage, même si quelque chose d’inattendu se produit pendant que vous êtes dedans. defer
fonctionne de la même manière pour les ressources dans tes programmes, comme les fichiers ou les connexions réseau.
Utilisation de defer
dans Go
Voyons comment utiliser defer
avec un exemple simple. Supposons que nous ouvrions un fichier et que nous voulions nous assurer qu’il sera toujours fermé après son utilisation.
package main
import (
"fmt"
"os"
)
func main() {
fichier, err := os.Open("exemple.txt")
if err != nil {
fmt.Println("Erreur lors de l'ouverture du fichier :", err)
return
}
defer fichier.Close() // Cette ligne assure que le fichier sera fermé
// Lire ou traiter le fichier
fmt.Println("Fichier ouvert avec succès.")
}
Dans cet exemple, nous utilisons defer fichier.Close()
. Cela signifie que, peu importe ce qui se passe après l’ouverture du fichier, la fonction fichier.Close()
sera appelée avant que la fonction main ne se termine. Cela garantit que le fichier est toujours fermé, même si une erreur survient pendant le traitement.
Voici un schéma qui illustre le fonctionnement de defer
.
