Что такое оператор defer в языке Go?

Оператор defer используется для отложенного выполнения функции или метода. Функции, помеченные defer, выполняются непосредственно перед выходом из содержащей их функции.

Короткий ответ

Что ответить на собеседовании

Оператор defer используется для отложенного выполнения функции или метода. Функции, помеченные defer, выполняются непосредственно перед выходом из содержащей их функции.

Подробный разбор

Ответ с пояснениями

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

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

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

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее