package dapi import ( "github.com/go-playground/validator/v10" "reflect" "strings" ) type ValidError struct { Key string Message string } type ValidErrors []*ValidError func (v *ValidError) Error() string { return v.Message } func (v ValidErrors) Error() string { return strings.Join(v.Errors(), ",") } func (v ValidErrors) Errors() []string { var errs []string for _, err := range v { errs = append(errs, err.Error()) } return errs } func ValidateField(usr interface{}, f func(typeOfCat reflect.Type, fieldName string)) { validate := validator.New() typeOfCat := reflect.TypeOf(usr) if typeOfCat.Kind() == reflect.Ptr { //err = err.Elem typeOfCat = typeOfCat.Elem() } err := validate.Struct(usr) if err != nil { for _, err := range err.(validator.ValidationErrors) { fieldName := err.Field() //获取是哪个字段不合乎格局 f(typeOfCat, fieldName) } } }