Например, надоедает писать конструкции вида
err := myfunc()
if err != nil {
panic(err)
}
err = myfunc2()
if err != nil {
panic(err)
}
err = myfunc3()
if err != nil {
panic(err)
}
Сделаем так:
err := CheckErrors(
myfunc,
myfunc2,
myfunc3,
)
if err != nil {
panic(err)
}
реализуется так:
// ErrorFunc - func with error result
type ErrorFunc func() error
// CheckErrors - check some errors
func CheckErrors(errChecks ...ErrorFunc) error {
for _, errFunc := range errChecks {
err := errFunc()
if err != nil {
return err
}
}
return nil
}
в составе готовой либы: https://github.com/Sagleft/swiss-knife