校验方法:https://godoc.org/github.com/gogf/gf/util/gvalid
- 其中
params
参数支持任意map
数据类型; rules
参数支持[]string
/map[string]string
数据类型,前面一种类型支持返回校验结果顺序,后一种不支持(因为map
是无序的);rules
参数中的map[string]string
是一个二维的关联数组/哈希表,第一维键名为参数键名,第二维为带有错误的校验规则名称,键值为错误信息;
多数据校验 - CheckMap
该示例同时也展示了msgs
自定义错误信息传递的两种数据类型,或者map[string]string
。其中map[string]string
类型参数需要指定对应字段、对应规则的错误提示信息,是一个二维的“关联数组”。
多数据校验 - 校验结果顺序性
那是因为校验的规则我们传递的是map
类型,而golang
的map
类型并不具有有序性,因此校验的结果和规则一样是随机的,同一个校验结果的同一个校验方法多次获取结果值返回的可能也不一样了。
我们来改进一下以上的示例:校验结果中如果不满足required
那么返回对应的错误信息,否则才是后续的校验错误信息;也就是说,返回的错误信息应当和我设定规则时的顺序一致。如下:
rules
的这种满足顺序性校验结果返回的规则,我们称之为gvalid tag
,在后续的结构体对象校验中,我们也可以遇得到这种gvalid tag
,语法是一样的。gvalid tag
的书写规则如下:
其中:
键名名称
必需字段(如果结合struct
使用为非必需字段),指需要校验的map
中的键名名称,需要和params
参数中的键名一致;校验规则
必需字段,多个规则以|
符号连接,注意规则顺序需要和错误提示
中的顺序一致,以便一一对应;错误提示
非必需字段,表示自定义的错误提示信息,当规则校验时对默认的错误提示信息进行覆盖;该字段也可以通过参数传入覆盖;