Senior
Defer nədir? Bu hekayə necə qurulub və bu operator nə vaxt icra olunur?
sobes.tech Süni İntellekt
AI-dan cavab
В языке Go оператор defer используется для отложенного выполнения функции — она будет вызвана после завершения окружающей функции, но перед её возвратом.
Это удобно для освобождения ресурсов, закрытия файлов, разблокировки мьютексов и т.п., гарантируя, что нужный код выполнится даже при ошибках или ранних выходах.
Пример:
func readFile() error {
f, err := os.Open("file.txt")
if err != nil {
return err
}
defer f.Close() // Закроется в конце функции
// Работа с файлом
return nil
}
Выполнение defer происходит в обратном порядке добавления (стек вызовов), сразу после того, как функция, в которой объявлен defer, начинает завершаться, но до возврата управления вызывающему коду.