Sobes.tech
Junior — Middle

Quel est le rôle de l'opérateur defer dans le langage Go et quels sont ses avantages?

sobes.tech IA

Réponse de l'IA

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