Sobes.tech
Back to questions
Senior
1

Что такое defer в Go? Что выведет код с двумя defer?

Companies where asked
Flant

Answer from AI

sobes.tech AI

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

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

Пример:

package main

import "fmt"

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

Вывод будет:

Основной код
Второй defer
Первый defer

То есть сначала выполняется основной код, затем отложенные вызовы в обратном порядке.