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.