• Задача
  • Решение
  • Обсуждение

CodeError: кастомный Is

Тип ошибки может определить свой Is, и тогда errors.Is сравнивает по смыслу, а не по ==. Реализуйте Error() (текст "код ") и Is(target error) (сравнить только коды, игнорируя msg) для codeError.

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
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки