Sobes.tech
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.