diff --git a/_examples/custom-validation/main.go b/_examples/custom-validation/main.go new file mode 100644 index 0000000..89781b6 --- /dev/null +++ b/_examples/custom-validation/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + + "gopkg.in/go-playground/validator.v9" +) + +// MyStruct .. +type MyStruct struct { + String string `validate:"is-awesome"` +} + +// use a single instance of Validate, it caches struct info +var validate *validator.Validate + +func main() { + + validate = validator.New() + validate.RegisterValidation("is-awesome", ValidateMyVal) + + s := MyStruct{String: "awesome"} + + err := validate.Struct(s) + if err != nil { + fmt.Printf("Err(s):\n%+v\n", err) + } + + s.String = "not awesome" + err = validate.Struct(s) + if err != nil { + fmt.Printf("Err(s):\n%+v\n", err) + } +} + +// ValidateMyVal implements validator.Func +func ValidateMyVal(fl validator.FieldLevel) bool { + return fl.Field().String() == "awesome" +}