Sobes.tech
Middle

Kas ir defer un kam tas tiek izmanto? Kādā secībā tiek izpildīti defer izsaukumi, ja to ir vairāk vienā funkcijā?

sobes.tech AI

Atbilde no AI

Go valodā atslēgas vārds defer tiek izmantots funkcijas atlikšanai: tā tiks izpildīta pēc apkārtējās funkcijas pabeigšanas, bet pirms tās atgriešanās. Tas ir noderīgi resursu atbrīvošanai, failu aizvēršanai, mutexu atbloķēšanai un citām tīrīšanas operācijām.

Ja vienā funkcijā ir vairākas defer izsaukumi, tie tiek izpildīti pretējā secībā nekā tie tika deklarēti (stakta secība). Citiem vārdiem sakot, pēdējais deklarētais defer tiks izpildīts pirmais.

Piemērs:

func piemērs() {
    defer fmt.Println("Pirmais defer")
    defer fmt.Println("Otrais defer")
    fmt.Println("Funkcijas ķermenī")
}
// Izvade būs:
// Funkcijas ķermenī
// Otrais defer
// Pirmais defer