package required import ( "fmt" "github.com/go-playground/validator/v10" "github.com/zeromicro/go-zero/core/logx" ) type Validate interface { ValidateAll(obj any) error BindToValidator(opts ...Option) error } type Validator struct { V *validator.Validate } func (v *Validator) ValidateAll(obj any) error { err := v.V.Struct(obj) if err != nil { return err } return nil } func (v *Validator) BindToValidator(opts ...Option) error { for _, item := range opts { err := v.V.RegisterValidation(item.ValidatorName, item.ValidatorFunc) if err != nil { return fmt.Errorf("failed to register validator : %w", err) } } return nil } func MustValidator(option ...Option) Validate { v := &Validator{ V: validator.New(), } if err := v.BindToValidator(option...); err != nil { logx.Error("failed to bind validator") } return v }