欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

引言

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

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

基本介紹

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

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

無序的原因

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

順序校驗

我們來舉個栗子:

校驗結果中如果不滿足required那么返回對應的錯誤信息,否則才是后續(xù)的校驗錯誤信息;

也就是說,返回的錯誤信息應當和我設定規(guī)則時的順序一致。

代碼示例如下:

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#賬號不能為空|賬號長度應當在{min}到{max}之間",
			"password@required|length:6,16|same:password2#密碼不能為空|密碼長度應當在{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:賬號長度應當在6到16之間 required:賬號不能為空]
passport map[length:賬號長度應當在6到16之間 required:賬號不能為空]
賬號不能為空

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

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

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

下一篇文章為大家剖析gvalid tag的知識點。

總結

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

以上就是GoFrame實現(xiàn)順序性校驗示例詳解的詳細內容,更多關于GoFrame順序性校驗的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

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

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

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

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

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

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

    Go語言圖片處理和生成縮略圖的方法

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

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

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

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

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

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

    這篇文章主要給大家介紹了Golang 獲取本地 IP 地址方法,文中有詳細的代碼示例,對我們的學習或工作有一定的幫助,需要的朋友可以參考下
    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解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • golang數(shù)組和切片作為參數(shù)和返回值的實現(xiàn)

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

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

最新評論