Тип ошибки может определить свой Is, и тогда errors.Is сравнивает по смыслу, а не по ==. Реализуйте Error() (текст "код ") и Is(target error) (сравнить только коды, игнорируя msg) для codeError.
- Задача
- Решение
- Обсуждение
CodeError: кастомный Is
GolangРешение
func (e codeError) Error() string {
return fmt.Sprintf("код %d", e.code)
}
func (e codeError) Is(target error) bool {
t, ok := target.(codeError)
if !ok {
return false
}
return e.code == t.code
}