亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解

 更新時(shí)間:2022年06月30日 09:01:51   作者:王中陽(yáng)Go  
這篇文章主要為大家介紹了GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在上一篇文章中 GoFrame數(shù)據(jù)校驗(yàn)之校驗(yàn)結(jié)果 | Error接口對(duì)象 ,關(guān)于順序與非順序性校驗(yàn)沒(méi)有做充分的介紹。

這篇文章填上之前留的坑,我們以map校驗(yàn)舉例:

基本介紹

我們通過(guò)上一篇文章了解到:Error接口對(duì)象的方法,其順序性只有使用順序校驗(yàn)規(guī)則時(shí)有效,否則返回的結(jié)果是隨機(jī)的。

即使我們使用FirstItemFirstString()等其他方法獲取校驗(yàn)結(jié)果也是一樣,返回的校驗(yàn)結(jié)果不固定。

無(wú)序的原因

因?yàn)樾r?yàn)的規(guī)則我們傳遞的是map類型,而golangmap類型并不具有有序性(底層數(shù)據(jù)結(jié)構(gòu)是hashmap),因此校驗(yàn)的結(jié)果和規(guī)則一樣是隨機(jī)的,同一個(gè)校驗(yàn)結(jié)果的同一個(gè)校驗(yàn)方法多次獲取結(jié)果值返回的可能也不一樣了。

順序校驗(yàn)

我們來(lái)舉個(gè)栗子:

校驗(yàn)結(jié)果中如果不滿足required那么返回對(duì)應(yīng)的錯(cuò)誤信息,否則才是后續(xù)的校驗(yàn)錯(cuò)誤信息;

也就是說(shuō),返回的錯(cuò)誤信息應(yīng)當(dāng)和我設(shè)定規(guī)則時(shí)的順序一致。

代碼示例如下:

package main

import (
	"fmt"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gctx"
)

func main() {
	var (
		ctx    = gctx.New()
		params = map[string]interface{}{
			"passport":  "",
			"password":  "wangzhongyang",
			"password2": "wangyang",
		}
		rules = []string{
			"passport@required|length:6,16#賬號(hào)不能為空|賬號(hào)長(zhǎng)度應(yīng)當(dāng)在{min}到{max}之間",
			"password@required|length:6,16|same:password2#密碼不能為空|密碼長(zhǎng)度應(yīng)當(dāng)在{min}到{max}之間|兩次密碼輸入不相等",
			"password2@required|length:6,16#",
		}
	)  
	err := g.Validator().Rules(rules).Data(params).Run(ctx)  
	if err != nil {
		fmt.Println(err.Map())
		fmt.Println(err.FirstItem())
		fmt.Println(err.FirstError())
	}
}

執(zhí)行后,終端輸出:

map[length:賬號(hào)長(zhǎng)度應(yīng)當(dāng)在6到16之間 required:賬號(hào)不能為空]
passport map[length:賬號(hào)長(zhǎng)度應(yīng)當(dāng)在6到16之間 required:賬號(hào)不能為空]
賬號(hào)不能為空

可以看到,上述的執(zhí)行結(jié)果是滿足順序性的。

我們來(lái)總結(jié)一下:我們想要校驗(yàn)結(jié)果滿足順序性,只需要將rules參數(shù)的類型設(shè)置為[]string,按照一定的規(guī)則設(shè)定即可,并且msgs參數(shù)既可以定義到rules參數(shù)中,也可以分開(kāi)傳入(使用第三個(gè)參數(shù))。

rules的這種滿足順序性校驗(yàn)結(jié)果返回的規(guī)則,我們稱之為gvalid tag。

下一篇文章為大家剖析gvalid tag的知識(shí)點(diǎn)。

總結(jié)

通過(guò)這篇文章,我們已經(jīng)拿到了實(shí)現(xiàn)順序性校驗(yàn)的金鑰匙:只需要將rules參數(shù)的類型設(shè)置為[]string,按照一定的規(guī)則設(shè)定即可,并且msgs參數(shù)既可以定義到rules參數(shù)中,也可以分開(kāi)傳入。

以上就是GoFrame實(shí)現(xiàn)順序性校驗(yàn)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于GoFrame順序性校驗(yàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 分析Go錯(cuò)誤處理優(yōu)化go?recover機(jī)制缺陷

    分析Go錯(cuò)誤處理優(yōu)化go?recover機(jī)制缺陷

    這篇文章主要為大家介紹了分析Go錯(cuò)誤處理優(yōu)化go?recover機(jī)制缺陷示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語(yǔ)言Elasticsearch數(shù)據(jù)清理工具思路詳解

    Go語(yǔ)言Elasticsearch數(shù)據(jù)清理工具思路詳解

    這篇文章主要介紹了Go語(yǔ)言Elasticsearch數(shù)據(jù)清理工具思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • go-zero熔斷機(jī)制組件Breaker接口定義使用解析

    go-zero熔斷機(jī)制組件Breaker接口定義使用解析

    這篇文章主要為大家介紹了go-zero熔斷機(jī)制組件Breaker接口定義使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Golang使用Zookeeper實(shí)現(xiàn)分布式鎖

    Golang使用Zookeeper實(shí)現(xiàn)分布式鎖

    分布式鎖是一種在分布式系統(tǒng)中用于控制并發(fā)訪問(wèn)的機(jī)制,ZooKeeper?和?Redis?都是常用的實(shí)現(xiàn)分布式鎖的工具,本文就來(lái)使用Zookeeper實(shí)現(xiàn)分布式鎖,希望對(duì)大家有所幫助
    2024-02-02
  • Go語(yǔ)言圖片處理和生成縮略圖的方法

    Go語(yǔ)言圖片處理和生成縮略圖的方法

    這篇文章主要介紹了Go語(yǔ)言圖片處理和生成縮略圖的方法,涉及Go語(yǔ)言針對(duì)圖片操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • golang一些常用的靜態(tài)檢查工具詳解

    golang一些常用的靜態(tài)檢查工具詳解

    這篇文章主要介紹了golang一些常用的靜態(tài)檢查工具,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • golang-redis之sorted set類型操作詳解

    golang-redis之sorted set類型操作詳解

    這篇文章主要介紹了golang-redis之sorted set類型操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Golang獲取本地IP地址方法分享

    Golang獲取本地IP地址方法分享

    這篇文章主要給大家介紹了Golang 獲取本地 IP 地址方法,文中有詳細(xì)的代碼示例,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • golang提示dial?tcp?172?.217.163.49:443:?connectex:?A?connection?attempt?failed解決

    golang提示dial?tcp?172?.217.163.49:443:?connectex:?A?con

    這篇文章主要為大家介紹了golang提示dial?tcp?172?.217.163.49:443:?connectex:?A?connection?attempt?failed解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • golang數(shù)組和切片作為參數(shù)和返回值的實(shí)現(xiàn)

    golang數(shù)組和切片作為參數(shù)和返回值的實(shí)現(xiàn)

    本文主要介紹了golang數(shù)組和切片作為參數(shù)和返回值的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論