@cayla
В Go можно получить код ошибки, используя функцию errors.Is
и errors.As
.
errors.Is
проверяет, является ли переданная ошибка эквивалентной ошибке, заданной в качестве целевой. Она возвращает true
, если ошибки эквивалентны, и false
в противном случае.
errors.As
ищет в цепочке ошибок экземпляр типа, заданного в качестве целевого, и если такой экземпляр найден, сохраняет его в переменную, заданную в качестве второго аргумента.
Вот пример кода, который демонстрирует использование errors.Is
и errors.As
для получения кода ошибки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import ( "errors" "fmt" ) var ErrCustom = errors.New("custom error") func main() { err := ErrCustom var target *errors.Error if errors.As(err, &target) { fmt.Println(target.Err) // выводит "custom error" } } |
В данном примере, если err
представляет собой экземпляр ошибки, созданной с помощью errors.New
, то errors.As
сохраняет ее в переменную target
. Если переменная была успешно сохранена, то код ошибки может быть получен из поля Err
структуры errors.Error
.