目前大都是使用,验证器
<>强安装强>
去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之数据校验的实现代码示例