mirror of
https://github.com/romdo/go-validate.git
synced 2026-02-18 23:56:41 +00:00
f24d999dff0cf8873dc6dfc254f68e8c2a44d8d3
Refactor the golangci-lint configuration to use the latest version and update GitHub Actions workflows. Key changes include: - Update golangci-lint to v2.6 - Update GitHub Actions to use latest checkout and setup-go actions - Update Go versions in test matrix - Remove deprecated cache steps - Update Makefile golangci-lint tool version - Minor documentation formatting improvements
go-validate
Yet another Go struct/object validation package, with a focus on simplicity, flexibility, and full control over validation logic.
Add validation to any type, by simply implementing the Validatable interface:
type Validatable interface {
Validate() error
}
Import
import "github.com/romdo/go-validate"
Example
type Order struct {
Books []*Book `json:"books"`
}
type Book struct {
Title string `json:"title"`
Author string `json:"author"`
}
func (s *Book) Validate() error {
var errs error
if s.Title == "" {
errs = validate.Append(errs, &validate.Error{
Field: "Title", Msg: "is required",
})
}
// Helper to perform the same kind of check as above for Title.
errs = validate.Append(errs, validate.RequireField("Author", s.Author))
return errs
}
func main() {
errs := validate.Validate(&Order{Books: []*Book{{Title: ""}}})
for _, err := range validate.Errors(errs) {
fmt.Println(err.Error())
}
}
Above example produces the following output:
books.0.title: is required
books.0.author: is required
Documentation
Please see the Go Reference for documentation and examples.
LICENSE
Languages
Go
94%
Makefile
6%