最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

引言

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

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

基本介紹

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

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

無序的原因

因?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)

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

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

也就是說,返回的錯(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é)果是滿足順序性的。

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

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

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

總結(jié)

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

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

相關(guān)文章

  • 詳解Golang中string的實(shí)現(xiàn)原理與高效使用

    詳解Golang中string的實(shí)現(xiàn)原理與高效使用

    在Go語言中,無論是字符串常量、字符串變量還是代碼中出現(xiàn)的字符串字面量,它們的類型都被統(tǒng)一設(shè)置為string,下面就跟隨小編一起來了解一下Golang中string的實(shí)現(xiàn)原理與高效使用吧
    2024-01-01
  • linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法

    linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法

    這篇文章主要介紹了linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法,實(shí)例分析了Go語言使用linux的系統(tǒng)命令ps來分析cpu使用情況的技巧,需要的朋友可以參考下
    2015-03-03
  • go語言gin框架中間件詳解

    go語言gin框架中間件詳解

    在Go語言中,gin是一個(gè)常用的Web框架,用于構(gòu)建RESTful API和Web應(yīng)用程序。本文將通過代碼示例詳細(xì)介紹了gin框架中間件,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • 一文詳解Go語言io.LimitedReader類型

    一文詳解Go語言io.LimitedReader類型

    這篇文章主要為大家介紹了Go語言io.LimitedReader類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Golang排列組合算法問題之全排列實(shí)現(xiàn)方法

    Golang排列組合算法問題之全排列實(shí)現(xiàn)方法

    這篇文章主要介紹了Golang排列組合算法問題之全排列實(shí)現(xiàn)方法,涉及Go語言針對(duì)字符串的遍歷及排列組合相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • GOLANG使用Context實(shí)現(xiàn)傳值、超時(shí)和取消的方法

    GOLANG使用Context實(shí)現(xiàn)傳值、超時(shí)和取消的方法

    這篇文章主要介紹了GOLANG使用Context實(shí)現(xiàn)傳值、超時(shí)和取消的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用?gomonkey?Mock?函數(shù)及方法示例詳解

    使用?gomonkey?Mock?函數(shù)及方法示例詳解

    在 Golang 語言中,寫單元測(cè)試的時(shí)候,不可避免的會(huì)涉及到對(duì)其他函數(shù)及方法的 Mock,即在假設(shè)其他函數(shù)及方法響應(yīng)預(yù)期結(jié)果的同時(shí),校驗(yàn)被測(cè)函數(shù)的響應(yīng)是否符合預(yù)期,這篇文章主要介紹了使用?gomonkey?Mock?函數(shù)及方法,需要的朋友可以參考下
    2022-06-06
  • 詳解go如何優(yōu)雅的使用接口與繼承

    詳解go如何優(yōu)雅的使用接口與繼承

    Go語言中的接口和嵌套結(jié)構(gòu)體是兩種重要的代碼設(shè)計(jì)方式,接口定義了一組方法簽名,使得不同的類型能夠以相同的方式進(jìn)行交互,本文將給大家介紹go語言如何優(yōu)雅的使用接口與繼承,文中有詳細(xì)的代碼供大家參考,需要的朋友可以參考下
    2024-06-06
  • Go語言中字符串四種拼接方式的性能對(duì)比

    Go語言中字符串四種拼接方式的性能對(duì)比

    在go語言中,字符串是不可變的,因此字符串之間的拼接實(shí)際上是創(chuàng)建了一個(gè)新的字符串,如果頻繁操作會(huì)對(duì)性能產(chǎn)生嚴(yán)重的影響,下面我們來看看Go語言中字符串四種常見拼接方式的性能對(duì)比吧
    2025-04-04
  • golang如何判斷文件是否存在

    golang如何判斷文件是否存在

    判斷一個(gè)文件是否存在是一個(gè)相當(dāng)常見的需求,在golang中也有多種方案實(shí)現(xiàn)這一功能,下面就跟隨小編一起學(xué)習(xí)一下具體的實(shí)現(xiàn)方法吧
    2024-11-11

最新評(píng)論

大荔县| 西和县| 始兴县| 平遥县| 宜州市| 镇康县| 雷州市| 绥棱县| 米脂县| 丰原市| 宝丰县| 新绛县| 汉寿县| 进贤县| 宁蒗| 余庆县| 瑞昌市| 大同市| 河池市| 新河县| 天等县| 体育| 许昌市| 尉犁县| 泰州市| 耒阳市| 辽阳市| 民勤县| 明溪县| 鄂温| 清徐县| 师宗县| 额尔古纳市| 昌乐县| 宜君县| 读书| 交城县| 托里县| 龙游县| 余干县| 泰和县|