Sobes.tech
Middle

In quale ordine vengono eseguite le funzioni differite (defer) in Go?

sobes.tech AI

Risposta dell'AI

Le funzioni differite vengono eseguite in ordine inverso a quello in cui sono state definite, cioè LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("primo") // Definito per ultimo
	defer fmt.Println("secondo") // Definito penultimo
	defer fmt.Println("terzo") // Definito primo
}

Come risultato, l'esecuzione di questo codice stamperà:

terzo
secondo
primo

Al termine del scope (funzione) in cui è stato dichiarato defer, le funzioni differite vengono chiamate in ordine inverso. Questo è utile per liberare risorse, chiudere file, sbloccare mutex e altre operazioni di pulizia.