Какой интерфейс у Error

«Какой интерфейс у Error» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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()).