Middle
Kokiu būdu vykdomos atidėtos funkcijos (defer) Go?
sobes.tech AI
Atsakymas iš AI
Atidėtos funkcijos vykdomos atvirkštine tvarka nei buvo apibrėžtos, tai yra LIFO (Last-In, First-Out).
package main
import "fmt"
func main() {
defer fmt.Println("pirmas") // Apibrėžtas paskutinis
defer fmt.Println("antras") // Apibrėžtas prieš paskutinį
defer fmt.Println("trečias") // Apibrėžtas pirmas
}
Rezultatas, vykdant šį kodą, bus:
trečias
antras
pirmas
Išeinant iš scope (funkcijos), kurioje buvo deklaruotas defer, atidėtos funkcijos kviečiamos atvirkštine tvarka. Tai naudinga resursų atlaisvinimui, failų uždarymui, mutexų atrakcinimui ir kitoms valymo operacijoms.