新版本的变更 / Go 1.20

// *** before: ***
func closeAll(files []*os.File) error {
    for _, f := range files {
        if err := f.Close(); err != nil {
            return err // остальные ошибки закрытия теряются
        }
    }
    return nil
}

// *** in version 1.20: ***
func closeAll(files []*os.File) error {
    var errs []error
    for _, f := range files {
        if err := f.Close(); err != nil {
            errs = append(errs, err)
        }
    }
    return errors.Join(errs...) // nil, если errs пуст
}