package-- validation

validation包的地址:https://pkg.go.dev/github.com/astaxie/beego/validation

特別注意方法Valid

// Validate a struct.
// the obj parameter must be a struct or a struct pointer
func (v *Validation) Valid(obj interface{}) (b bool, err error)

方法Valid的參數(shù)為interface,如果要將一個(gè)結(jié)構(gòu)體傳遞給Valid
該結(jié)構(gòu)體必須實(shí)現(xiàn)Valid方法

例如:

如何進(jìn)行定義?

type PasswordModifyForm struct? {? ?
OldPassword ?string `form:"oldPassword"`? ?
NewPassword ?string `form:"newPassword"`? ?
NewPassword2 string `form:"newPassword2"`
}

func (f *PasswordModifyForm) Valid(validation *validation.Validation) {
? ? ? ?.....
}

如何進(jìn)行使用?

form := &PasswordModifyForm?{}
valid := &validation.Validation{}
hasError, err? := valid.Valid(form)

不理解的地方:
按照go中方法的定義,我們應(yīng)該用form去調(diào)用Valid
但這里是用valid(&validation.Validation)調(diào)用Valid方法

why?因?yàn)関alidation中Valid方法的參數(shù)為interface{},若將一個(gè)結(jié)構(gòu)體傳入Valid方法中,該結(jié)構(gòu)體必須先實(shí)現(xiàn)Valid方法才能夠賦值給interface{} (不要理解為函數(shù)調(diào)用,如form.Valid())


關(guān)于validation的Match方法

func (v *Validation) Match(obj interface{}, regex *regexp.Regexp, key string) *Result

參數(shù)1:待驗(yàn)證的string

參數(shù)2:正則表達(dá)式(該參數(shù)為go標(biāo)準(zhǔn)庫中的regexp.Regexp,而不支持其他如regexp2作為參數(shù))

參數(shù)3:key的形式為"key.key.key"
? ? ? ? ? ? ? 詳見源碼:validation.go Match方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Match方法中用到的apply方法?validation.go apply方法

參考資料:

【1】beego validation.go源碼

【2】beego 表達(dá)驗(yàn)證源文檔--詳細(xì)說明

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容