Sobes.tech
Senior

Какво е defer в Go? Какво ще изведе кодът с два defer?

sobes.tech AI

Отговор от AI

В езика Go ключовата дума defer се използва за отлагане на извикването на функция: тя ще бъде изпълнена след като завърши обграждащата функция, но преди нейното връщане.

Ако в една функция има няколко defer, те се изпълняват в обратен ред на тяхното обявяване (стек на извикванията).

Пример:

package main

import "fmt"

func main() {
    defer fmt.Println("Първи defer")
    defer fmt.Println("Втори defer")
    fmt.Println("Основен код")
}

Изходът ще бъде:

Основен код
Втори defer
Първи defer

Тоест, първо се изпълнява основният код, след това отложените извиквания в обратен ред.