Ответ
Ошибка (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для проверки типов ошибок