golang 更新数据判断完成与否_GO学习笔记 - 数据校验

本文主题:基于asaskevich/govalidator实现Golang数据校验

小慢哥的原创文章,欢迎转载


目录

▪ 一. asaskevich/govalidator介绍

▪ 二. 字符串匹配

▪ 三. struct元素匹配

▪ 四. struct元素可选验证

▪ 五. struct嵌套校验

▪ 六. 无法实现嵌套的可选校验

▪ 七. 个人最佳实践

▪ 八. 其他功能

▪ 附录1. 字符串合法性校验

▪ 附录2. struct元素校验项

▪ 附录3. 数据特征匹配

▪ 附录4. 类型转换

▪ 附录5. 裁剪、处理、填充、遍历等


一. asaskevich/govalidator介绍

godoc里可以搜到若干相似的第三方数据校验模块,但笔者推荐使用asaskevich/govalidator,原因:

▷ star最多、持续更新发布

▷ 功能完善、使用便利

▷ 丰富的字符串校验、数据匹配、裁剪拼接处理等

▷ 支持struct元素合法性校验,并且支持嵌套检查

▷ 源码值得学习,就是一个百宝箱

// 下载go get github.com/asaskevich/govalidator

注意:查看使用方法到github,查看支持的函数列表到godoc

https://github.com/asaskevich/govalidatorhttps://godoc.org/github.com/asaskevich/govalidator

二. 字符串匹配

govalidator支持非常多种字符串匹配,先贴上一个简单例子

package mainimport ( "fmt" "github.com/asaskevich/govalidator")func main() { // 判断字符串值是否为合法的IPv4地址 ip4 := "192.168.1.1" fmt.Println(govalidator.IsIPv4(ip4)) // true // 判断字符串值是否为合法的MAC mac := "aa:bb:cc:dd:ee:ffffff" fmt.Println(govalidator.IsMAC(mac)) // false // 判断数字是否在指定范围内 dig := 101 // string类型也可以用 fmt.Println(govalidator.InRange(dig, 0, 100)) // false}

输出

truefalsefalse

完整的可用校验方法列表详见本文附录1、3


三. struct元素匹配

govalidator专门提供了一个函数,用于校验struct的元素

govalidator.ValidateStruct()

简单例子

package mainimport ( "fmt" "github.com/asaskevich/govalidator")type foo struct { A string `valid:"ipv4"` B string `valid:"mac"` C string `valid:"range(0|100)"` // 也可以使用int类型}func main() { f := foo{ A: "192.168.1.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值