忽略
|  或
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. API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC 最近一段时间关于GraphQL的讨论很多,一些项目中也相继用到了这种风格,但使用是否合理,是否存在杀鸡用牛刀这样的问题 ...

  2. 【DS】P9062 [Ynoi2002] Adaptive Hsearch&Lsearch(区间最近点对)

    Problem Link 给定平面上 \(n\) 个点,\(Q\) 次询问编号在 \([l,r]\) 内的点的最近点对.\(n,Q\le 2.5\times 10^5\). 技巧:平面网格化 乱搞都是 ...

  3. typeScript类型别名

    类型别名 类型别名:是可以给一个类型起一个新的名字 采用关键字 type 例如 type Name=string|number type strType=string|number|boolean; ...

  4. Golang Map底层实现简述

    Go的map是一种高效的数据结构,用于存储键值对.其底层实现是一个哈希表(hash table),下面是有关map底层实现的详细介绍: 哈希表: map的底层实现是一个哈希表,也称为散列表.哈希表是一 ...

  5. CMake出错的处理

    在windows上使用cmake来c++的程序,遇到一个问题 问题排查 试过在电脑上单独使用gcc是可以编译成功的,那么就可能是IDE集成的问题了 IDE的编译工具链从mingw换成vs,编译通过 让 ...

  6. 【二】最新多智能体强化学习文章如何查阅{顶会:AAAI、 ICML }

    相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...

  7. Spring自带的这11个工具类,真香!

    前言 最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率. 今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助. 1 Assert 很多时候 ...

  8. 蓝鲸单机离线部署:app_mgr组件安装失败解决

    之前在腾讯蓝鲸智云-单机离线部署测试中,遇到了几个安装问题,本文记录下3.2 app_mgr组件安装失败 的解决过程,因为这个问题卡了很久(可能也是因为笔者对python相关知识和蓝鲸产品不够熟悉), ...

  9. SpringBoot-MyBatis - Java枚举类型 <---> MySQL Int,建立 类型处理器(typeHandlers)

    场景: MySQL里的某一个字段,比如:status状态,一共有5个状态,我们会在MySQL里 建立 status(int)字段,1.2.3.4.5 来标记5种状态:利用MyBatis在自动代码生成器 ...

  10. ASP.NET Core分布式项目实战(Identity Server 4回顾,Consent 实现思路介绍)--学习笔记

    任务17:Identity Server 4回顾 上一节我们中间留了一部分,登录之后的 RequireConsent,就是用户授权这一步没有做,直接跳过,这种情况可以理解为我们自己比较信任的客户端,这 ...