Sobes.tech
Back to questions
Junior — Middle
95

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

Companies where asked
Фабрика РешенийФабрика Решений
Twinby
Mail.ruMail.ru
Маском

Answer from AI

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, независимо от того, как именно функция завершится.