без reflect и switch x.(type) ?
Возможно есть что-то более простое, типа Sprintf() с каким-то форматером
Думал, что %T или %#v дадут приемлемый результат, но нет
https://play.golang.com/p/zPymr7EFPZi
Типо получить ошибку в виде строки?
err.Error()
это скорее message, нежели тип
не мессадж нужен, а тип ошибки т.е. нужно получить исходное ErrNoRows https://play.golang.com/p/zPymr7EFPZi
используйте sentinel value, если вы хотите сравнить тип ошибки
errors.As errors.Is
Это перебор заранее известных вариантов мне же нужно обобщенное решение
Не сравнить, а получить тип ошибки я не хочу закладываться на захардкоженный список ошибок
реализуйте error интерфейс самостоятельно: type CustomError struct { Type string Msg string } func (c *CustomError) Error() string { return c.Msg }
тоже нет, у меня не стоит задача использовать кастомные ошибки мне, грубо говоря, нужно посчитать (и сгруппировать по типу) ошибки, возникающие в сторонних пакетах
если сторонние пакеты никак не типизуют свои ошибки то и получить тип будет практически невозможно
github.com/davecgh/go-spew
Обсуждают сегодня