Sobes.tech
Middle

Dans quel ordre les fonctions différées (defer) sont-elles exécutées en Go?

sobes.tech IA

Réponse de l'IA

Les fonctions différées s'exécutent dans l'ordre inverse de leur définition, c'est-à-dire LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("premier") // Défini en dernier
	defer fmt.Println("deuxième") // Défini en penultième
	defer fmt.Println("troisième") // Défini en premier
}

En conséquence, lors de l'exécution de ce code, il affichera :

troisième
deuxième
premier

Lorsqu'on sort du scope (fonction) où defer a été déclaré, les fonctions différées sont appelées dans l'ordre inverse. Cela est utile pour libérer des ressources, fermer des fichiers, débloquer des mutex et autres opérations de nettoyage.