Sobes.tech
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