Sobes.tech
Back to questions
Middle
5

Что такое defer в Go и в какой момент он вызывается?

Companies where asked
Япоки

Answer from AI

sobes.tech AI

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

Это удобно для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и других операций очистки, гарантируя, что они произойдут даже при возникновении ошибок или паники.

Пример:

func readFile() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close() // файл закроется в конце функции

    // работа с файлом
}

Здесь file.Close() будет вызван автоматически при выходе из readFile, независимо от того, как именно функция завершится.