golang之数据校验的实现代码示例

  

目前大都是使用,验证器

  

<>强安装
  

        去gopkg.in/go-playground/validator.v9   之前      

<强>原理

  

当然只能通过反射来实现了,之前写过一篇反射的文章,golang之反射和断言,里面有写到怎么通过反射获取结构标记。

  

读取结构标记之后就是对里面的标识符进行识别,然后进行验证了。具体可以去看源码。

  

<强>演示

  

简单使用:
  

        主要包      导入(   “fmt”   “gopkg.in/go-playground/validator.v9”   )//用户包含用户信息   输入用户信息结构体{   FirstName字符串的验证:“需要”   LastName字符串的验证:“需要”   年龄uint8验证:“gte=0, lte=100”   电子邮件字符串的验证:“要求,电子邮件”   }         函数main () {   验证:=validator.New ()   用户:=和用户信息{   名字:“獾”,   姓:“史密斯”,   年龄:105年,   电子邮件:“”,   }   错:=validate.Struct(用户)   如果犯错!=nil {   _,犯错:=犯错。(validator.ValidationErrors) {   fmt.Println (err)   }   返回   }   fmt.Println(“成功”)   }      之前      

输出:   

  

键:“用户信息。“年龄”时代的错误:现场验证失败>   1.知识产权   输入用户信息结构体{   Ip字符串的验证:“知识产权”   }   2.数字   输入用户信息结构体{   float32数量的验证:“数字”   }   3 .最大值   输入用户信息结构体{   float32数量的验证:“max=10”   }   4 .最小值   输入用户信息结构体{   float32数量的验证:“min=10”   }   之前      

自定义验证函数
  

        主要包      导入(   “fmt”   “gopkg.in/go-playground/validator.v9”   “unicode/utf8 "   )//用户包含用户信息   输入用户信息结构体{   名称字符串的验证:“checkName”   float32数量的验证:“数字”   }//自定义验证函数   func checkName (fl validator.FieldLevel) bool {   数:=utf8.RuneCountInString (fl.Field () .String ())   fmt。Printf("长度:% v \ n”,数量)   如果数比;5 {   返回假   }   还真   }      函数main () {   验证:=validator.New ()//注册自定义函数,与结构标记关联起来   错:=验证。checkName RegisterValidation (“checkName”)   用户:=和用户信息{   姓名:“我是中国人,我爱自己的祖国”,   数量:23日,   }   呃=validate.Struct(用户)   如果犯错!=nil {   _,犯错:=犯错。(validator.ValidationErrors) {   fmt.Println (err)   }   返回   }   fmt.Println(“成功”)   }      之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

golang之数据校验的实现代码示例