Sobes.tech
Senior
38

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

Сұралған компаниялар
Flant

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

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