Два способа. errors.As — для typed errors: var pe *os.PathError; if errors.As(err, &pe) { fmt.Println(pe.Path) }. Проходит по цепочке Unwrap, находит нужный тип. Type switch — для нескольких типов: switch e := err.(type) { case *ValidationError: ... case *NotFoundError: ... }. Но type switch не ходит по цепочке! Поэтому errors.As предпочтительнее для wrapped errors. Не используй fmt.Sprintf и strings.Contains для проверки ошибок — это хрупко и ломается при рефакторинге.
Как проверить тип ошибки?
Middle
268 просмотровAFK Offer AI
Задача: что выведет этот код? goroutine захватывает переменную цикла