教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang validator

golang validator

发布时间:2022-01-28   编辑:jiaochengji.com
教程集为您提供golang validator等资源,欢迎您收藏本站,我们将为您提供最新的golang validator资源
<pre class="has"><code class="language-html">常用的开源包validator:</code></pre> <pre class="has"><code class="language-html">import gopkg.in/go-playground/validator.v8</code></pre> <pre class="has"><code class="language-html">import gopkg.in/go-playground/validator.v9</code></pre>

基础用法参看文档即可:

https://godoc.org/gopkg.in/go-playground/validator.v8

https://godoc.org/gopkg.in/go-playground/validator.v9

 

一点trick的用法:

由于golang的特性,结构体基础数据类型没有赋值会默认零值(int默认0,string默认""等),所以require不能校验出基础类型是默认零值,还是被赋为了零值。

比如:

<pre class="has"><code class="language-html">CommType int64 `json:"comm_type"validate:"exists"`</code></pre>

这样无法判断是传入了0表示某种商品类型,还是根本就没传,一种解决办法是:

<pre class="has"><code class="language-html">CommType *int64 `json:"comm_type" validate:"exists"`</code></pre>

改成指针类型,这样没传就是nil,传了0就不是nil,这样就区分开了,如果没传就不能通过校验。

 

validator是golang常用做校验的开源包,项目中常见的有v8和v9两个版本,在零值和nil的校验上有一些区别:

v8 required 和 exists 的区别:required nil和零值都不能通过检验,exists 零值能通过,nil不能通过;

v8 和 v9 的区别:v9没有exists了,统一用require,用在基础类型上零值不能通过,用在指针上nil不能通过而零值能通过

v9的做法比较好,做了统一,因为指针的零值就是nil,所以统一的来说:require零值不能通过。简洁有效!

 

对比表:

v8:

<table><thead><tr><th>exists</th><th>无</th><th>0</th><th>1</th></tr></thead><tbody><tr><td>int64</td><td>√</td><td>√</td><td>√</td></tr><tr><td>*int64</td><td>X</td><td>√</td><td>√</td></tr></tbody></table><table><thead><tr><th style="width:336px;">require</th><th style="width:209px;">无</th><th>0</th><th>1</th></tr></thead><tbody><tr><td style="width:336px;">int64</td><td style="width:209px;">X</td><td>X</td><td>√</td></tr><tr><td style="width:336px;">*int64</td><td style="width:209px;">X</td><td>X</td><td>√</td></tr></tbody></table>

 

v9:

<table><thead><tr><th style="width:343px;">require</th><th style="width:198px;">无</th><th>0</th><th>1</th></tr></thead><tbody><tr><td style="width:343px;">int64</td><td style="width:198px;">X</td><td>X</td><td>√</td></tr><tr><td style="width:343px;">*int64</td><td style="width:198px;">X</td><td>√</td><td>√</td></tr></tbody></table>

 

 

到此这篇关于“golang validator”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Golang数据校验validator
golang 中的小工具
jQuery W3C-Validator Icons
golang validator
java中Struts2 表单验证方法
火狐4、谷歌12不支持Jquery Validator的解决方法分享
使用 Go-Lookslike 测试数据形状
Laravel 默认重置密码功能代码重构方法
golang 扩展package 列表
asp.net内容导入word文档与word模板

[关闭]
~ ~