Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: Go, custom error, error interface, type assertion

Как создать кастомный тип ошибки в Go?

Проверяет понимание создания пользовательских типов ошибок в Go для более точной обработки ошибок.

Короткий ответ

В Go можно создать кастомный тип ошибки, реализовав интерфейс error, который требует метод Error() string. Для этого объявляется структура с нужными полями и определяется метод Error(). Затем можно использовать такой тип в коде, проверяя его через утверждение типа (type assertion) или switch по типу.

Длинный ответ

Создание кастомного типа ошибки в Go

В Go ошибки реализуют встроенный интерфейс error, который требует только один метод: Error() string. Чтобы создать собственный тип ошибки, нужно определить структуру, которая содержит дополнительные поля (например, код ошибки, контекст), и реализовать для неё метод Error().

Пример реализации

type MyError struct {
    Code    int
    Message string
}

func (e *MyError) Error() string {
    return fmt.Sprintf("error %d: %s", e.Code, e.Message)
}

func doSomething() error {
    return &MyError{Code: 404, Message: "not found"}
}

func main() {
    err := doSomething()
    if e, ok := err.(*MyError); ok {
        fmt.Println("Custom error:", e.Code)
    }
}

Применение

Кастомные ошибки полезны, когда нужно передать дополнительную информацию об ошибке, например, HTTP-статус код, идентификатор запроса или внутренний код ошибки. Они позволяют вызывающему коду различать типы ошибок и принимать соответствующие решения.

Вывод

Используйте кастомные типы ошибок, когда стандартного сообщения недостаточно и требуется структурированная обработка ошибок, особенно в больших приложениях или библиотеках.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • Golang

    Golang

Ключевые слова

#Go

#custom error

#error interface

#type assertion

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.