Middle
Milyen sorrendben hajtódnak végre a késleltetett (defer) függvények Go-ban?
sobes.tech MI
Válasz az MI-től
A késleltetett függvények a definíciójuk fordított sorrendjében futnak, azaz LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("első") // Utoljára definiált
defer fmt.Println("második") // Előzőleg definiált
defer fmt.Println("harmadik") // Elsőként definiált
}
Ennek eredményeként, amikor ez a kód fut, a következő fog megjelenni:
harmadik
második
első
A defer-rel deklarált függvények, amikor kilépnek a scope-ból (függvény), fordított sorrendben hívódnak meg. 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.