Ответ
В Go для валидации кода чаще всего используют:
-
go vet — встроенный статический анализатор, ищет подозрительные конструкции (например, неправиное использование
printf). -
staticcheck — мощный линтер, выявляет ошибки, неиспользуемый код и антипаттерны.
-
golangci-lint — агрегатор линтеров (включает staticcheck, errcheck и др.), удобен для CI/CD.
-
errcheck — проверяет, что ошибки не игнорируются.
Пример использования golangci-lint:
golangci-lint run ./...
Для валидации структур часто используют библиотеки:
- validator (на основе тегов)
- go-playground/validate (более гибкий)
Пример с validator:
type User struct {
Email string `validate:"required,email"`
Age int `validate:"min=18"`
}