code: func (v *defaultValidator) ValidateStruct(obj interface{}) error {
  	value := reflect.ValueOf(obj)
  	valueType := value.Kind()
  	if valueType == reflect.Ptr {
  		valueType = value.Elem().Kind()
  	}
  	if valueType == reflect.Struct {
  		v.lazyinit()
  		if err := v.validate.Struct(obj); err != nil {
  			return err
  		}
  	}
  	return nil
  }
docs: // ValidateStruct receives any kind of type, but only performed struct or pointer to struct type.