Middle
Mis on defer ja milleks seda kasutatakse? Millises järjekorras täidetakse defer-kutsed, kui neid on ühes funktsioonis mitu?
sobes.tech AI
Vastus AI-lt
Go keeles kasutatakse märksõna defer funktsiooni hilinemiseks: see täidetakse pärast ümbritseva funktsiooni lõpetamist, kuid enne selle tagastamist. See on kasulik ressursside vabastamiseks, failide sulgemiseks, mutexide avamiseks ja muude puhastustööde jaoks.
Kui ühes funktsioonis on mitu defer-kõnet, täidetakse need vastupidises järjekorras nende deklaratsioonist ( virna järjekorras). Teisisõnu, viimane deklareeritud defer täidetakse esimesena.
Näide:
func näide() {
defer fmt.Println("Esimene defer")
defer fmt.Println("Teine defer")
fmt.Println("Funktsiooni kehas")
}
// Väljund on:
// Funktsiooni kehas
// Teine defer
// Esimene defer