Назад к вопросам
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("Обрабатываем файл...")

	// Дальнейшая работа с файлом
}

Вывод программы:

Открываем файл.
Обрабатываем файл...
Файл будет закрыт.