Как в go получить код ошибки а не ее описание?

Как в go получить код ошибки а не ее описание? В дебагере у ошибки есть поле Code, но я не могу получить к нему доступ через точку.


Ответы (1 шт):

Автор решения: Pak Uula

В базовом интерфейсе error есть только один метод: Error() string

Никаких кодов ошибки в этом интерфейсе нет.

В дебагере вы видите конкретный тип ошибки, реализованный авторами той библиотеки, которой вы пользуетесь. Посмотрите, что это за тип, и потом приводите интерфейс error к этому типу. У приведённого значения поле Code будет видно, и компилятор вас не заругает.

    res, err := some_package.SomeFunc()
    if err != nil {
        concrete_err, ok := err.(some_package.SomeError)
        if ok {
            // Переменная concrete_err типа SomeError, у неё поле Code доступно
        } else {
            // не угадали тип ошибки, нужен план Б
        }
    }
→ Ссылка