Sobes.tech
Senior

Kas yra defer Go? Ką išves kodas su dviem defer?

sobes.tech AI

Atsakymas iš AI

Go kalboje raktinis žodis defer naudojamas funkcijos vėlinimui: ji bus vykdoma po apimančios funkcijos pabaigos, bet prieš jos grąžinimą.

Jei funkcijoje yra keli defer, jie vykdomi atvirkštine tvarka nei buvo deklaruoti (kvietimo stekas).

Pavyzdys:

package main

import "fmt"

func main() {
    defer fmt.Println("Pirmas defer")
    defer fmt.Println("Antras defer")
    fmt.Println("Pagrindinis kodas")
}

Išvesčiai bus:

Pagrindinis kodas
Antras defer
Pirmas defer

Tai reiškia, kad pirmiausia vykdomas pagrindinis kodas, tada atidėlioti iškvietimai atvirkštine tvarka.