var ErrNotFound = errors.New("not found") на уровне пакета?Чтобы сравнивать ошибки по идентичности (errors.Is(err, ErrNotFound)), а не по тексту. Текст сообщения может меняться - сравнение по нему хрупкое.
var (
ErrNotFound = errors.New("not found")
ErrForbidden = errors.New("forbidden")
)
if errors.Is(err, ErrNotFound) {
return 404
}
Даже если ошибка обёрнута (fmt.Errorf("db: %w", ErrNotFound)), errors.Is найдёт её в цепочке. Сравнение err.Error() == "not found" ломается при смене формулировки.