忽略
|  或
omitempty 有则验证,空值则不验证
dive  潜入到切片、数组、映射中,例如 NumList []int `validate:"len=2,dive,gt=18"` //切片长度为2,潜入切片后,里面的成员必须大于18
requiredrequired_with[_all]、 required_without[_all]   //required_with表示指定字段有值,则本字段必须有值;required_without表示指定字段没有值时,本字段必须有值;指定字段有值,则本字段有值无值都可以。
len  数字时等效于eq, 字符串时等效字符串长度(是rune长度,比如"世界"或"sj"都满足len=2的约束),切片或映射的话是元素的个数
max、min
eq、ne、{l|g}t[e]
oneof  例如 oneof=male female
alpha alphanum numeric hexadecimal

file  文件是否存在
contains(包含某个字符) containsany(包含任意一个给定字符串中的字符)  containsrune  excludes excludesall(不包含给定字符串中的所有字符) excludesrune
ip ipv4 ipv6 cidr cidrv{4|6} {tc|ud}p[{4|6}]_addr(就是多了端口号验证) fqdn eth_addr   可解析的IP地址(测试发现没觉得和ipv4、ipv6、ip标签有什么不同):ip[{4|6}]_addr mac 
email url uri base64 base64url(因为base64的+和/在url中有特殊意义)  uuid  uuid3 uuid4 uuid5

startswith( 以什么开始)  endswith(以什么结束)   v9版本及其之后才能支持
ascii asciiprint multibyte(多字节,比如汉字,注意:如果是空,校验也能通过)

v9版本支持:file dir unique alphaunicode alphanumunicode startswith endswith html html_encoded url_encoded

例子:

type user struct {
Name string `validate:"eq=bob|eq=tony"` //Name取值必须为bob或tony
Age int64 `validate:"gte=6,lte=13"` //Age取值必须为 6~13岁之间,可以用max=13,min=6代替
CodeList []string `validate:"omitempty,gte=3,dive,len=2,hexadecimal"` //CodeList要么没有值,要么至少三个成员,dive潜入成员:成员长度必须位2字节,16进制的。
}
type Output struct{
Enable bool
FileName string `validate:"required_with=Enable"` //当Enable==true时,FileName必须存在
MaxSize int `validate:"required_with=Enable, gt=2"` //当Enable==true时,MaxSize必须存在,且大于2
}

其他:

map验证:    Info  map[string]string `validate:"gt=0,dive,keys,eq=Name|eq=Alias,endkeys,required"` //gt=0表示map成员大于0, keys和endkeys中间的部分用来验证键,键名必须是Name和Alias,最后的required作用于值

Last int `validate:"gtcsfield=Sub.Age"` //Last字段比Sub这个子结构下的Age要大

unique  //保证切片、数组的元素唯一,映射的值唯一

latitude longitude  //纬度、经度

gopkg.in/go-playground/validator中比较有用的标签的更多相关文章

  1. 分享20款移动开发中很有用的 jQuery 插件

    今天,很显然每个网站都需要有一个移动优化的界面以提高移动用户的使用体验.在开发任何移动项目时,要尽可能保持每一种资源尺寸都尽可能的小,以给最终用户提供一个好的体验是非常重要的.在这篇文章中我们已经编制 ...

  2. 推荐25款php中非常有用的类库

    推荐25款php中非常有用的类库 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014-09-29   作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出 ...

  3. SQL Server中一些有用的日期sql语句

    SQL Server中一些有用的日期sql语句 1.一个月第一天的 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一 SELECT DA ...

  4. iconv简介(1、字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2、编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有linux等)

    iconv简介(1.字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2.编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有lin ...

  5. eclipse中最有用的10个快捷键

    这里列出一些在使用eclipse的过程中最有用的10个快捷键,通过灵活使用这些快捷键可以提高开发效率和开发质量. 1. [ctrl+shift+r]打开资源 这可能是所有快捷键中最省时间的了.这个快捷 ...

  6. HTML meta标签的用法及head中的一些常用标签

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta主要为分HTTP标头信息(HTTP-EQUIV)和页面描述信息(NAME)标头信息包括文档类型.字符集.语言等浏览器正确显示网页的信 ...

  7. 沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown

    沉淀,再出发:sublime中快捷键和html标签的使用和生成以及使用markdown 一.前言 工欲善其事,必先利其器.在软件代码的编写中,一定要知道IDE或者编辑器的快捷键的使用,这样可以提高很多 ...

  8. jquery-validator中js校验及标签校验的使用

    jquery-validator中js校验及标签校验的使用: 1.项目中引入jquery.validate.js  官方网站:http://bassistance.de/  http://jquery ...

  9. 移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签)

    移动端网站如何开发(电脑端网站到手机端网站我们需要在html代码中添加哪个meta标签) 一.总结 一句话总结: 添加viewport标签:meta name="viewport" ...

  10. javaWeb中struts开发——Logic标签

    1.Struts标签的logic标签 Logic标签是逻辑标签,是Struts中比较重要的标签,完成各种逻辑运算操作,可以直接支持全局调转. 2.1<logic:present><l ...

随机推荐

  1. 【字符串,哈希】【Yandex】Yandex7736

    2023.6.30 Problem Link 定义一个串 \(S\) 是好的,当且仅当 \(S\) 可以不断消去相邻两个相同字符直至消空.给定一个长为 \(n\) 的字符串 \(s\),求有多少个有序 ...

  2. Fabric网络升级(总)

    原文地址在这里. 在fabric网络中,升级nodes和通道至最新版本需要四步: 备份账本和MSPs. 以滚动的方式将orderer升级到最新版. 以滚动的方式将peers升级到最新版. 将order ...

  3. Qt 信号重载问题

    Qt信号重载问题 例如QComBox的currentIndexChanged信号,包括 void QComboBox::currentIndexChanged(const QString &t ...

  4. 开源IM项目OpenIM 客户端SDK架构剖析-确保消息的有序性,以及消息百分百可达

    开源IM项目OpenIM第二版对于客户端架构进行了局部重构,解决了消息触发时序等bug,也梳理了内部模块.目前已经接近尾声,本文重点讲解SDK架构,以便大家深入了解OpenIM,并希望大家能深度参与开 ...

  5. 1.1 Windows驱动开发:配置驱动开发环境

    在进行驱动开发之前,您需要先安装适当的开发环境和工具.首先,您需要安装Windows驱动开发工具包(WDK),这是一组驱动开发所需的工具.库.示例和文档.然后,您需要安装Visual Studio开发 ...

  6. NC223888 红色和紫色.md

    题目链接 题目 题目描述 漫长的生命总是无聊的.这天,小红和紫准备玩一个染色游戏. 她们拿出了一个有 \(n*m\) 个格子的网格,每个格子只能被染成红色或紫色.每个人可以任意选择一个格子染成红色和紫 ...

  7. javascript 对http的get请求参数编码encodeURIComponent、encodeURI 和Java 解码

    JavaScript 代码encode functionfindNE(){ var nd = document.getElementById("NE").value; nd = e ...

  8. 【Unity3D】线段渲染器LineRenderer

    1 LineRenderer 简介 ​ LineRenderer 组件用于绘制线段,可以调整线段条数.端点坐标.颜色.宽度等属性,其属性面板如下: Materials:线段材质,最好设置为 Defau ...

  9. Event对象

    Event对象 Event对象表示在DOM中出现的事件,在DOM中有许多不同类型的事件,其主要使用基于Event对象作为主接口的二次接口,Event对象本身包含适用于所有事件的属性和方法. 描述 事件 ...

  10. FTP命令详解(含操作实例)

    以下是微软命令行FTP客户端命令大全,如果你想使用"未加工(RAW)"FTP命令而非下面翻译过的请参考:http://www.nsftools.com/tips/RawFTP.ht ...