Ответ
type error interface {
Error() string
}
Это встроенный интерфейс в Go. Любой тип, реализующий метод Error() string, удовлетворяет интерфейсу error. Пример реализации:
type MyError struct {
Msg string
}
func (e *MyError) Error() string {
return e.Msg
}
func foo() error {
return &MyError{"something went wrong"}
}
Часто используют errors.New() или fmt.Errorf() для создания простых ошибок. Начиная с Go 1.13, появились обертки ошибок (Unwrap(), Is(), As()).