Sobes.tech
Junior
220

Какова цель использования конструкции defer в языке Go?

AI-дан жауап

sobes.tech AI

Конструкция defer используется для отложенного выполнения функции или метода. Запланированная функция будет выполнена непосредственно перед тем, как окружающая её функция вернёт управление.

Основные цели использования defer:

  • Освобождение ресурсов: Гарантированное закрытие файлов, очистка сетевых соединений, освобождение блокировок мьютексов и других системных ресурсов, даже если в коде возникнет паника.
  • Упрощение кода: Позволяет разместить код освобождения ресурса рядом с кодом его захвата, улучшая читаемость.
  • Обработка паник: В комбинации с recover, defer можно использовать для перехвата и обработки паник.

Пример освобождения файла:

// Пример отложенного закрытия файла
file, err := os.Open("example.txt")
if err != nil {
    // обработка ошибки
    return
}
defer file.Close() // Гарантированное закрытие файла при выходе из функции

// работа с файлом