gopkg.in/go-playground/validator.v4 (go): Package validator implements value validations for structs and individual fields based on tags. It can also handle Cross Field validation and even Cross Field Cross Struct validation for nested structs.  Built In Validator  A simple example usage:  The error can be used like so  Both StructValidationErrors and FieldValidationError implement the Error interface but it's intended use is for development + debugging, not a production error message.  Why not a better error message? because this library intends for you to handle your own error messages  Why should I handle my own errors? Many reasons, for us building an internationalized application I needed to know the field and what validation failed so that I could provide an error in the users specific language.  The hierarchical error structure is hard to work with sometimes.. Agreed Flatten function to the rescue! Flatten will return a map of FieldValidationError's but the field name will be namespaced.  Custom functions can be added  Cross Field Validation can be implemented, for example Start & End Date range validation  Multiple validators on a field will process in the order defined  Bad Validator definitions are not handled by the library  NOTE: Baked In Cross field validation only compares fields on the same struct, if cross field + cross struct validation is needed your own custom validator should be implemented.  Here is a list of the current built in validators:  Validator notes:  This package panics when bad input is provided, this is by design, bad code like that should not make it to production.
Keywords: error-handling|translation|validation