Sobes.tech
Senior

Mis on defer Go-s? Mida näitab kood kahe deferiga?

sobes.tech AI

Vastus AI-lt

Go keeles kasutatakse märksõna defer funktsiooni hilinemiseks: see täidetakse pärast ümbritseva funktsiooni lõppu, kuid enne selle tagastamist.

Kui funktsioonis on mitu defer, siis need täidetakse vastupidises järjekorras nende deklaratsioonist (kutsesammas).

Näide:

package main

import "fmt"

func main() {
    defer fmt.Println("Esimene defer")
    defer fmt.Println("Teine defer")
    fmt.Println("Põhikood")
}

Väljund on:

Põhikood
Teine defer
Esimene defer

See tähendab, et kõigepealt täidetakse põhikood, siis hilinenud kutsed vastupidises järjekorras.