Sobes.tech
Middle

U kom redosledu se izvršavaju odložene funkcije (defer) u Go?

sobes.tech АИ

Одговор од АИ

Odložene funkcije se izvršavaju u obrnutom redosledu od njihovog definisanja, odnosno LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("prvi") // Definisano poslednje
	defer fmt.Println("drugi") // Definisano pretposlednje
	defer fmt.Println("treći") // Definisano prvo
}

Kao rezultat, pri izvršavanju ovog koda, biće prikazano:

treći
drugi
prvi

Pri izlasku iz opsega (funkcije) u kojoj je deklarisan defer, odložene funkcije se pozivaju u obrnutom redosledu. Ovo je korisno za oslobađanje resursa, zatvaranje fajlova, otključavanje mutexa i druge operacije čišćenja.