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

GoFrame框架數據校驗之校驗對象校驗結構體

 更新時間:2022年06月20日 17:28:33   作者:王中陽Go  
這篇文章主要為大家介紹了GoFrame框架數據校驗之校驗對象校驗結構體示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言摘要

這篇文章將會為大家介紹GoFrame數據校驗中校驗對象的知識點,包括:Validator對象常用方法的介紹、單數據校驗、校驗Map、校驗結構體的示例。

基本概念

數據校驗組件提供了數據校驗對象:用于數據校驗統(tǒng)一的配置管理,支持我們便捷的進行鏈式操作。

方法介紹

type Validator
    func New() *Validator
    func (v *Validator) CheckMap(params interface{}) Error
    func (v *Validator) CheckStruct(object interface{}) Error
    func (v *Validator) CheckValue(value interface{}) Error
    func (v *Validator) Clone() *Validator
    func (v *Validator) Ctx(ctx context.Context) *Validator
    func (v *Validator) Data(data interface{}) *Validator
    func (v *Validator) I18n(i18nManager *gi18n.Manager) *Validator
    func (v *Validator) Messages(messages interface{}) *Validator
    func (v *Validator) Rules(rules interface{}) *Validator

簡要說明

  • New()方法用于創(chuàng)建一個新的校驗對象。
  • CheckValue/CheckMap/CheckStruct方法用于特定參數類型的數據校驗,我們在項目開發(fā)中使用比較多的是CheckStruct,也建議大家使用CheckStruct。
  • Ctx()方法用于傳遞Context上下文變量。
  • I18n()方法用于設置當前校驗對象的I18N國際化組件,默認情況下,校驗組件使用的是框架全局默認的i18n組件對象。
  • Data()方法用于設置需要校驗的數據集合,支持map類型或者struct類型。
  • Rules()方法用于傳遞當前鏈式操作校驗的自定義校驗規(guī)則,支持使用[]string類型或者map類型。
  • Messages()方法用于傳遞當前鏈式操作校驗的自定義錯誤提示信息,往往使用map類型傳遞,具體看后續(xù)代碼示例。

注意問題TIPS

在數據校驗對象的CheckValue/CheckMap/CheckStruct方法中,不存在Context上下文變量參數,而是通過鏈式操作的Ctx方法來控制。

GoFrame的g模塊中定義了Validator方法來快捷創(chuàng)建校驗對象:官方也推薦我們使用g模塊的g.Validator()方式來快捷創(chuàng)建一個校驗對象。

鏈式操作

示例1:單數據校驗

簡單示例

err := g.Validator().Rules("min:60").Messages("考試不及格").CheckValue(16)
    fmt.Println(err.String()) //打印結果:考試不及格

進階示例

package main
import (
   "fmt"
   "github.com/gogf/gf/frame/g"
)
func main() {
   data := g.Map{
      "password": "123", //這個的作用僅是定義了這個結構設置了默認值,并不代表著傳入了值
   }
   //Data()中的參數是需要進行校驗的數據集合,常用于map或者結構體類型。
   //CheckValue()是輸入的參數
   err := g.Validator().Data(data).Rules("required-with:password").Messages("請輸入確認密碼").CheckValue("")
   if err != nil {
      fmt.Println("CheckValue傳入為空時:" + err.String()) // 請輸入確認密碼
   } else {
      fmt.Println("CheckValue傳入為空時:校驗通過")
   }
   err = g.Validator().Data(data).Rules("required-with:password").Messages("請輸入確認密碼").CheckValue("1")
   if err != nil {
      fmt.Println("CheckValue傳入不為空時:" + err.String()) // 請輸入確認密碼
   } else {
      fmt.Println("CheckValue傳入不為空時:校驗通過")
   }
}

進階示例打印結果

示例2:Map數據校驗

params := map[string]interface{}{
	"passport":  "",
	"password":  "wangzhongyang",
	"password2": "zhongyang",
}
rules := map[string]string{
	"passport":  "required|length:6,16",
	"password":  "required|length:6,16|same:password2",
	"password2": "required|length:6,16",
}
messages := map[string]interface{}{
	"passport": "賬號不能為空|賬號長度應當在:min到:max之間",
	"password": map[string]string{
		"required": "密碼不能為空",
		"same":     "兩次密碼輸入不相等",
	},
}
err := g.Validator().Messages(messages).Rules(rules).CheckMap(params)
if err != nil {
	g.Dump(err.Maps())
}

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

{
    "passport": {
        "length": "賬號長度應當在6到16之間",
        "required": "賬號不能為空"
    },
    "password": {
        "same": "兩次密碼輸入不相等"
    }
}

示例3:Struct數據校驗

type User struct {
	Name string `v:"required#請輸入用戶姓名"`
	Type int    `v:"required#請選擇用戶類型"`
}
data := g.Map{
	"name": "wangzhongyang",
}
user := User{}
if err := gconv.Scan(data, &user); err != nil {
	panic(err)
}
err := g.Validator().Data(data).CheckStruct(user)
if err != nil {
	fmt.Println(err.Items()) //[map[Type:map[required:請選擇用戶類型]]]
}

總結

這篇文章為大家介紹了GoFrame數據校驗之校驗對象的知識點,包括:Validator對象常用方法的介紹、單數據校驗、校驗Map、校驗結構體的示例。

更多關于GoFrame校驗結構體的資料請關注腳本之家其它相關文章!

相關文章

  • golang gorm 計算字段和獲取sum()值的實現

    golang gorm 計算字段和獲取sum()值的實現

    這篇文章主要介紹了golang gorm 計算字段和獲取sum()值的實現操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang協(xié)程與線程區(qū)別簡要介紹

    golang協(xié)程與線程區(qū)別簡要介紹

    這篇文章主要介紹了golang協(xié)程與線程區(qū)別簡要介紹,進程是操作系統(tǒng)資源分配的基本單位,是程序運行的實例,線程是操作系統(tǒng)調度到CPU中執(zhí)行的基本單位
    2022-06-06
  • Go定時器cron的使用詳解

    Go定時器cron的使用詳解

    本篇文章主要介紹了Go定時器cron的使用詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Go語言實現一個簡單的并發(fā)聊天室的項目實戰(zhàn)

    Go語言實現一個簡單的并發(fā)聊天室的項目實戰(zhàn)

    本文主要介紹了Go語言實現一個簡單的并發(fā)聊天室的項目實戰(zhàn),文中根據實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Golang的循環(huán)中break和continue語句的用法講解

    Golang的循環(huán)中break和continue語句的用法講解

    這篇文章主要介紹了Golang的循環(huán)中break和continue語句的用法講解,是Go語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10
  • 詳解如何在golang鏡像中設置指定時區(qū)

    詳解如何在golang鏡像中設置指定時區(qū)

    這篇文章主要為大家詳細介紹了如何在golang鏡像中設置指定時區(qū),文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的可以了解一下
    2023-04-04
  • GO語io包的常用接口

    GO語io包的常用接口

    這篇文章主要介紹了GO語io包的常用接口,分析了GO語言接口的概念與功能,并實例列舉了幾個最常用的接口的用法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • Golang?統(tǒng)計字符串中數字字母數量的實現方法

    Golang?統(tǒng)計字符串中數字字母數量的實現方法

    這篇文章主要介紹了Golang?統(tǒng)計字符串中數字字母數量,本文給出了兩種從字符串獲取數字與字母數量的方法,分別是ASCII 碼值和正則表達式,需要的朋友可以參考下
    2022-06-06
  • Go語言并發(fā)編程之互斥鎖Mutex和讀寫鎖RWMutex

    Go語言并發(fā)編程之互斥鎖Mutex和讀寫鎖RWMutex

    Go 語言中提供了很多同步工具,本文將介紹互斥鎖Mutex和讀寫鎖RWMutex的使用方法,想要具體了解的小伙伴,請參考下面文章詳細內容,希望對你有所幫助
    2021-10-10
  • 基于go中fyne gui的通達信數據導出工具詳解

    基于go中fyne gui的通達信數據導出工具詳解

    這篇文章主要介紹了基于go中fyne gui的通達信數據導出工具,這是一個用 Go 語言開發(fā)的通達信數據導出工具,可以將通達信的本地數據導出為多種格式,方便用戶進行數據分析和處理,需要的朋友可以參考下
    2024-12-12

最新評論

丰都县| 锦屏县| 武乡县| 霸州市| 买车| 高陵县| 灯塔市| 庄浪县| 江川县| 昌图县| 盖州市| 句容市| 中江县| 南投县| 唐河县| 东源县| 南投县| 山阳县| 临夏县| 定边县| 玛纳斯县| 从化市| 聂拉木县| 咸宁市| 基隆市| 翁源县| 桦南县| 普兰店市| 息烽县| 闽清县| 麟游县| 天祝| 霍邱县| 正阳县| 新巴尔虎左旗| 定日县| 七台河市| 白水县| 商水县| 得荣县| 台山市|