This package provides a framework for writing validations for Go applications. It does not, however, provide you with any actual validators, that part is up to you.
$ go get github.com/markbates/validateUsing validate is pretty easy, just define some Validator objects and away you go.
Here is a pretty simple example:
package main import ( "log" v "github.com/markbates/validate" ) typeUserstruct{NamestringEmailstring } func (u*User) IsValid(errors*v.Errors){ifu.Name==""{errors.Add("name", "Name must not be blank!") } ifu.Email==""{errors.Add("email", "Email must not be blank!") } } funcmain(){u:=User{Name: "", Email: ""} errors:=v.Validate(&u) log.Println(errors.Errors) // map[name:[Name must not be blank!] email:[Email must not be blank!]] }In the previous example I wrote a single Validator for the User struct. To really get the benefit of using go-validator, as well as the Go language, I would recommend creating distinct validators for each thing you want to validate, that way they can be run concurrently.
package main import ( "fmt""log""strings" v "github.com/markbates/validate" ) typeUserstruct{NamestringEmailstring } typePresenceValidatorstruct{FieldstringValuestring } func (v*PresenceValidator) IsValid(errors*v.Errors){ifv.Value==""{errors.Add(strings.ToLower(v.Field), fmt.Sprintf("%s must not be blank!", v.Field)) } } funcmain(){u:=User{Name: "", Email: ""} errors:=v.Validate(&PresenceValidator{"Email", u.Email}, &PresenceValidator{"Name", u.Name}) log.Println(errors.Errors) // map[name:[Name must not be blank!] email:[Email must not be blank!]] }That's really it. Pretty simple and straight-forward Just a nice clean framework for writing your own validators. Use in good health.