Files
go-validate/README.md

1.4 KiB

romdo/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

MIT