Skip to content

Repository files navigation

Validator

GoDocBuild Status

Package validator implements value validation for struct fields.

The package was a fork of go-validator but was rewritten to:

  • Reduce unneccesary memory allocations
  • Support Slice/Array, Map, Interface,
  • Simplify source code.

Download

go get -u github.com/goburrow/validator

Example

package main
import (
"errors""fmt""github.com/goburrow/validator"
)
typeUserstruct {
Namestring`valid:"notempty"`Ageint`valid:"min=13"`Addresses []*Address`valid:"min=1,max=2"`
}
typeAddressstruct {
Line1stringLine2stringPostCodeint`valid:"min=1"`Countrystring`valid:"notempty,max=2"`
}
func (a*Address) Validate() error {
ifa.Line1==""&&a.Line2=="" {
returnerrors.New("Either address Line1 or Line2 must be set")
}
returnnil
}
funcmain() {
u:=&User{
Addresses: []*Address{
&Address{
Line1: "Somewhere",
PostCode: 1000,
Country: "AU",
},
&Address{
PostCode: -1,
Country: "US",
},
&Address{
Line2: "Here",
PostCode: 1,
Country: "USA",
},
},
}
v:=validator.Default()
fmt.Println(v.Validate(u))
// Output:// Name must not be empty,// Age must not be less than 13 (was 0),// Addresses must have length not greater than 2 (was 3),// Either address Line1 or Line2 must be set,// PostCode must not be less than 1 (was -1),// Country must have length not greater than 2 (was 3)
}

About

Validator struct fields in Go

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages