Sobes.tech
Middle

În ce ordine sunt executate funcțiile întârziate (defer) în Go?

sobes.tech AI

Răspuns de la AI

Funcțiile întârziate se execută în ordinea inversă față de cea în care au fost definite, adică LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("primul") // Definit ultima
	defer fmt.Println("al doilea") // Definit penultimul
	defer fmt.Println("al treilea") // Definit primul
}

Ca rezultat, la rularea acestui cod, se va afișa:

al treilea
al doilea
primul

La ieșirea din scope-ul (funcția) în care a fost declarat defer, funcțiile întârziate sunt apelate în ordine inversă. Acest lucru este util pentru eliberarea resurselor, închiderea fișierelor, deblocarea mutexurilor și alte operațiuni de curățare.