Что такое Еrror в Go

«Что такое Еrror в Go» — вопрос из категории Golang, который задают на 31% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ошибка (error) в Go — это встроенный интерфейс с единственным методом Error() string. Любой тип, реализующий этот метод, считается ошибкой. Ошибки в Go обрабатываются явно, что способствует надежности кода.

Пример:

type MyError struct {
    Msg string
}

func (e *MyError) Error() string {
    return e.Msg
}

func someFunc() error {
    return &MyError{"что-то пошло не так"}
}

func main() {
    if err := someFunc(); err != nil {
        fmt.Println(err) // выведет: что-то пошло не так
    }
}

Особенности:

  • Ошибки — обычные значения, их можно сравнивать (err == io.EOF)
  • Можно оборачивать ошибки с fmt.Errorf и %w
  • С Go 1.13 появились функции errors.Is, errors.As для проверки типов ошибок