Skip to content

Instantly share code, notes, and snippets.

@Sagleft
Created July 13, 2022 15:52
Show Gist options
  • Save Sagleft/b0b41a56b8ccdb9f1024464841154184 to your computer and use it in GitHub Desktop.
Save Sagleft/b0b41a56b8ccdb9f1024464841154184 to your computer and use it in GitHub Desktop.
сворачивание проверки ошибок на Golang

Например, надоедает писать конструкции вида

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment