defer?Ключевое слово defer регистрирует вызов функции так, чтобы он выполнился при выходе из текущей функции - при обычном return или при panic. Часто используется для освобождения ресурсов: закрытие файлов, разблокировка мьютексов, чтобы не забыть их вызвать при любом пути выхода.
f, err := os.Open("file.txt")
if err != nil {
return err
}
defer f.Close()
// ... работа с f
return nil // f.Close() вызовется здесь