Middle
Kas yra defer ir kam jis naudojamas? Kokia tvarka vykdomi defer iškvietimai, jei jų yra keli vienoje funkcijoje?
sobes.tech AI
Atsakymas iš AI
Go kalboje, raktas žodis defer naudojamas funkcijos vėlinimui: ji bus vykdoma po apimančios funkcijos pabaigos, bet prieš jos grąžinimą. Tai naudinga išteklių atlaisvinimui, failų uždarymui, mutexų atrakcinimui ir kitoms valymo operacijoms.
Jei vienoje funkcijoje yra keli defer iškvietimai, jie vykdomi atvirkštine tvarka nei buvo deklaruoti (kėlimo tvarka). Kitaip tariant, paskutinis deklaruotas defer bus vykdomas pirmas.
Pavyzdys:
func pavyzdys() {
defer fmt.Println("Pirmas defer")
defer fmt.Println("Antras defer")
fmt.Println("Funkcijos kūne")
}
// Išvestis bus:
// Funkcijos kūne
// Antras defer
// Pirmas defer