GoFrame Struct校驗(yàn)-Assoc關(guān)聯(lián)

2022-03-30 13:44 更新

為了避免結(jié)構(gòu)體默認(rèn)值帶來(lái)的困惑,從?goframe v2.0?版本開(kāi)始,我們?cè)黾恿艘粋€(gè)?Assoc?方法,用于結(jié)構(gòu)體校驗(yàn)時(shí)嚴(yán)格按照給定的參數(shù)而不是按照結(jié)構(gòu)體的屬性值,而校驗(yàn)規(guī)則同樣會(huì)自動(dòng)讀取結(jié)構(gòu)體中的?gvalid tag?。

該特定對(duì)接收客戶端請(qǐng)求參數(shù)校驗(yàn)的場(chǎng)景特別有用。

使用示例

package main

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

func main() {
	type User struct {
		Name string `v:"required#請(qǐng)輸入用戶姓名"`
		Type int    `v:"required#請(qǐng)選擇用戶類型"`
	}
	var (
		ctx  = gctx.New()
		user = User{}
		data = g.Map{
			"name": "john",
		}
	)  
	err := g.Validator().Assoc(data).Data(user).Run(ctx)  
	if err != nil {
		g.Dump(err.Items())
	}
}

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

[
    {
        "Type": {
            "required": "請(qǐng)選擇用戶類型"
        }
    }
]

可以看到,結(jié)構(gòu)體中的屬性?Type?校驗(yàn)規(guī)則?required?并沒(méi)有受到默認(rèn)值的影響,仍舊被執(zhí)行了預(yù)期的校驗(yàn)檢查。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)