🟡 Средний · 2 очк. Обработка ошибок
Что делает errors.As(err, &target)?
A Сравнивает ошибки
B Извлекает ошибку конкретного типа из цепочки
C Создаёт ошибку
D Логирует ошибку
Объяснение вопроса

errors.As(err, &target) ищет в цепочке обёрнутых ошибок первую, которую можно присвоить в target (по типу), и записывает её в target. Возвращает true, если нашёл.

Зачем

Позволяет извлечь кастомный тип ошибки с дополнительными полями, не полагаясь на текст сообщения.

type PathError struct {
    Path string
    Err  error
}

func (e *PathError) Error() string { return e.Path + ": " + e.Err.Error() }
func (e *PathError) Unwrap() error { return e.Err }

var pe *PathError
if errors.As(err, &pe) {
    fmt.Println("path:", pe.Path)
}

target должен быть указателем на тип. Если в цепочке есть ошибка типа *PathError, она будет записана в pe.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.