Назад к вопросам
Middle
82
questionbank
Что такое оператор defer в языке Go?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Оператор defer используется для отложенного выполнения функции или метода. Функции, помеченные defer, выполняются непосредственно перед выходом из содержащей их функции.
Принципы работы defer:
- Выполняется при выходе из текущей функции, будь то нормальное выполнение или паника.
- Несколько
deferв одной функции выполняются в порядке LIFO (Last-In, First-Out). - Полезен для очистки ресурсов, таких как закрытие файлов или сетевых соединений.
Пример использования:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Открываем файл.")
file, err := os.Open("example.txt")
if err != nil {
// Обработка ошибки
return
}
// Отложенное закрытие файла
defer file.Close()
defer fmt.Println("Файл будет закрыт.") // Этот defer выполнится первым (LIFO)
fmt.Println("Обрабатываем файл...")
// Дальнейшая работа с файлом
}
Вывод программы:
Открываем файл.
Обрабатываем файл...
Файл будет закрыт.