@@ -2,6 +2,7 @@ package main
22
33import (
44 "encoding/json"
5+ "errors"
56 "fmt"
67 "reflect"
78 "strings"
@@ -114,33 +115,36 @@ func main() {
114115 // this check is only needed when your code could produce
115116 // an invalid value for validation such as interface with nil
116117 // value most including myself do not usually have code like this.
117- if _ , ok := err .( * validator.InvalidValidationError ); ok {
118+ if errors . As ( err , & validator.InvalidValidationError {}) {
118119 fmt .Println (err )
119120 return
120121 }
121122
122- for _ , err := range err .(validator.ValidationErrors ) {
123- e := validationError {
124- Namespace : err .Namespace (),
125- Field : err .Field (),
126- StructNamespace : err .StructNamespace (),
127- StructField : err .StructField (),
128- Tag : err .Tag (),
129- ActualTag : err .ActualTag (),
130- Kind : fmt .Sprintf ("%v" , err .Kind ()),
131- Type : fmt .Sprintf ("%v" , err .Type ()),
132- Value : fmt .Sprintf ("%v" , err .Value ()),
133- Param : err .Param (),
134- Message : err .Error (),
123+ var validateErrs validator.ValidationErrors
124+ if errors .As (err , & validateErrs ) {
125+ for _ , err := range validateErrs {
126+ e := validationError {
127+ Namespace : err .Namespace (),
128+ Field : err .Field (),
129+ StructNamespace : err .StructNamespace (),
130+ StructField : err .StructField (),
131+ Tag : err .Tag (),
132+ ActualTag : err .ActualTag (),
133+ Kind : fmt .Sprintf ("%v" , err .Kind ()),
134+ Type : fmt .Sprintf ("%v" , err .Type ()),
135+ Value : fmt .Sprintf ("%v" , err .Value ()),
136+ Param : err .Param (),
137+ Message : err .Error (),
138+ }
139+
140+ indent , err := json .MarshalIndent (e , "" , " " )
141+ if err != nil {
142+ fmt .Println (err )
143+ panic (err )
144+ }
145+
146+ fmt .Println (string (indent ))
135147 }
136-
137- indent , err := json .MarshalIndent (e , "" , " " )
138- if err != nil {
139- fmt .Println (err )
140- panic (err )
141- }
142-
143- fmt .Println (string (indent ))
144148 }
145149
146150 // from here you can create your own error messages in whatever language you wish
0 commit comments