Back to questions
Middle
104
questionbank
Что такое оператор defer в языке Go?
Sobes Copilot
Get answers in real time
Answer from AI
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("Обрабатываем файл...")
// Дальнейшая работа с файлом
}
Вывод программы:
Открываем файл.
Обрабатываем файл...
Файл будет закрыт.