Middle
Kas yra defer operatorius Go kalboje?
sobes.tech AI
Atsakymas iš AI
defer operatorius naudojamas funkcijos ar metodo vėlavimui vykdyti. Funkcijos, pažymėtos defer, vykdomos būtent prieš išeinant iš jų esančios funkcijos pabaigą.
defer veikimo principai:
- Vykdomas išėjus iš dabartinės funkcijos, nesvarbu, ar tai būtų normalus išėjimas, ar panikos iššaukimas.
- Kelios
deferfunkcijos vienoje funkcijoje vykdomos LIFO (Last-In, First-Out) tvarka. - Naudinga išvalyti išteklius, pvz., uždaryti failus ar tinklo ryšius.
Pavyzdys:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Atidaromas failas.")
file, err := os.Open("example.txt")
if err != nil {
// Klaidos apdorojimas
return
}
// Atidėtas failo uždarymas
defer file.Close()
defer fmt.Println("Failas bus uždarytas.") // Šis `defer` bus vykdomas pirmas (LIFO)
fmt.Println("Apdorojamas failas...")
// Papildomas darbas su failu
}
Programos išvestis:
Atidaromas failas.
Apdorojamas failas...
Failas bus uždarytas.