Struct默认值对required规则的影响

Struct的属性会有默认值,在某些情况下会引起required规则的失效。例如:

  1. type User struct {
  2. Name string `v:"required"`
  3. Age uint `v:"required"`
  4. }

在该结构体校验中,Age属性的required校验将会失效,因为Age即便没有输入也会有默认值0

这里有三种解决方案:

  1. (推荐)使用Struct校验的Assoc联合校验方法设置联合校验参数,在校验Struct类型参数时,参数值将以Assoc方法中给定的参数为准执行校验。
  2. 使用组合校验规则来弥补默认值对required规则,例如以上示例中将Age属性的校验规则修改为required:min:1将能达到业务校验的效果。
  3. 将属性改为指针类型,例如*int*float64*g.Var等,通过指针类型默认值为nil的特点绕过了这个问题。