Sobes.tech
Middle

Mi az a defer és mire használják? Milyen sorrendben hajtódnak végre a defer hívások, ha több van belőlük egy funkcióban?

sobes.tech MI

Válasz az MI-től

A Go nyelvben a defer kulcsszó arra szolgál, hogy késleltetett hívást hajtsunk végre: a függvény befejezése után, de annak visszatérése előtt kerül végrehajtásra. Ez hasznos erőforrások felszabadítására, fájlok bezárására, mutexek feloldására és más tisztítási műveletekre.

Ha egy függvényben több defer hívás van, azok fordított sorrendben hajtódnak végre (verem sorrend). Más szóval, az utolsó defer kerül végrehajtásra elsőként.

Példa:

func példa() {
    defer fmt.Println("Első defer")
    defer fmt.Println("Második defer")
    fmt.Println("A függvény testében")
}
// A kimenet így fog kinézni:
// A függvény testében
// Második defer
// Első defer