Documentation
¶
Overview ¶
Package validator provides validation for structs and fields.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(v *Validator)
Option sets options for the validator.
func DefaultOption ¶
func DefaultOption() Option
DefaultOption returns an Option which sets validator to use tag name 'valid' and support function 'notempty', 'min', 'max'.
func WithFunc ¶
WithFunc returns an Option which adds a new function handler. If a function with same name existed, it will be overriden by the given one. It panics if name is empty or handler is nil.
func WithTagName ¶
WithTagName returns an Option which sets tagName to the validator.
type UnsupportedError ¶
type UnsupportedError string
UnsupportedError is a generic error returned when validation function is applied on fields it does not support or the function has not been registered to Validator.
func (UnsupportedError) Error ¶
func (e UnsupportedError) Error() string
type Validatable ¶
type Validatable interface {
Validate() error
}
Validatable is an interface implemented by types that can validate themselves.
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
Validator implements value validation for structs and fields.
Example ¶
package main
import (
"errors"
"fmt"
"github.com/predixdeveloperACN/validator"
)
type User struct {
Name string `valid:"notempty"`
Age int `valid:"min=13"`
Addresses []*Address `valid:"min=1,max=2"`
}
type Address struct {
Line1 string
Line2 string
PostCode int `valid:"min=1"`
Country string `valid:"notempty,max=2"`
}
func (a *Address) Validate() error {
if a.Line1 == "" && a.Line2 == "" {
return errors.New("Either address Line1 or Line2 must be set")
}
return nil
}
func main() {
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)
func Default ¶
func Default() *Validator
Default returns a new default validator. See DefaultOption for the options used for the validator.