Назад к вопросам
Middle
4
Что такое defer в Go и в какой момент он вызывается?
Компании, где спрашивали
Япоки
Ответ от нейросети
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, независимо от того, как именно функция завершится.