Sobes.tech
Назад к вопросам
Junior — Middle
96

Какова роль оператора defer в языке Go и в чем его преимущества?

Компании, где спрашивали
Фабрика РешенийФабрика Решений
Twinby
Mail.ruMail.ru
Маском

Ответ от нейросети

sobes.tech AI

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

Преимущества defer:

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

Пример:

func readFile() error {
    file, err := os.Open("file.txt")
    if err != nil {
        return err
    }
    defer file.Close() // файл закроется при выходе из функции

    // работа с файлом
    return nil
}

Здесь file.Close() будет вызван автоматически при выходе из readFile, независимо от того, как именно функция завершится.