Большинство функций очистки, особенно связанных с операциями ввода-вывода, возвращают error
, и обычно мы предпочитаем defer
их выполнение в случае, если мы не забудем вызвать их, когда закончим сприобретенные ресурсы.Например, в какой-то момент кода мы могли бы написать что-то вроде этого:
var r *SomeResource
var err error
if r, err = Open(/* parameters */); err != nil {
return nil, err
}
defer r.Close() // This might return an error
Кажется, что если функция Close
возвращает ошибку, она будет проигнорирована.Как мы можем аккуратно обработать возвращенную error
от такой функции?