Sobes.tech
Middle

Cos'è defer in Go e in quale momento viene chiamato?

sobes.tech AI

Risposta dell'AI

In Go, la parola chiave defer viene utilizzata per chiamare una funzione in modo differito: verrà eseguita dopo che la funzione circostante si sarà completata, ma prima della sua uscita.

Questo è utile per liberare risorse, chiudere file, sbloccare mutex e altre operazioni di pulizia, garantendo che avvengano anche in caso di errori o panico.

Esempio:

func readFile() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close() // il file verrà chiuso alla fine della funzione

    // lavoro con il file
}

Qui, file.Close() verrà chiamato automaticamente all'uscita da readFile, indipendentemente da come termina la funzione.