Sobes.tech
Назад к вопросам
Senior
2

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

Компании, где спрашивали
Flant

Ответ от нейросети

sobes.tech AI

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

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

Пример:

package main

import "fmt"

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

Вывод будет:

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

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