codecamp

GoFrame 数据校验-FAQ

Struct默认值对required规则的影响

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

type User struct {
	Name string `v:"required"`
	Age  uint   `v:"required"`
}

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

这里有三种解决方案:

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


GoFrame 数据校验-方法介绍
GoFrame 类型转换-基本介绍
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

GoFrame 核心组件

GoFrame 核心组件-数据库ORM

GoFrame 模块列表

GoFrame 模块列表-单元测试

GoFrame 模块列表-功能调试

GoFrame WEB服务开发

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }