Как-то можно передать эту "важность" в логгер, не передавая сам логгер внутрь функции?
хранить важность в ошибке?
Использовать кастомную ошибку с параметром "важность" Либо хранить какой-нибудь map, где каждой ошибке соответствует важность
- кастомная структура ошибки с полем severity. - кастомная функция логгирования, которая попробует конвертнуть ошибку к вашей кастомной структуре и достать severity. в случае успеха вызовет нужный метод логгера, который тоже должен быть передан в эту функцию. Будьте осторожны со сравнением кастомных структур, реализующих интерфейс error, c nil. Типизированный nil != просто nil. type MyStruct{} func ErrFunc() error { var r *MyStruct return r } func main() { fmt.Println(ErrFunc() == nil) // false!! } https://yourbasic.org/golang/gotcha-why-nil-error-not-equal-nil/
Емнип, дело не в типизированности, а в имплицитных кастах в интерфейс. Интерфейс ссылающийся на nil это не то же самое что nil
Обсуждают сегодня