基本使用方法是在结构体字段的标签中使用required_if,并指定条件字段和条件值。以下是一个示例代码: go package main import ( "fmt" "github.com/go-playground/validator/v10" ) type User struct { Type string `validate:"required,oneof=admin user"` Password string `validate:"required_if=Type admin"...
这是验证逻辑,if (m.CardType == "RECIPROCAL" || m.CardType == "INTERIM") && m.CardExpiry.Day == "" { //validation error}required_if可以基于同一结构中的字段值使用(在本例中为 CardExpiry)Day string `validate:"required_if=Month 01"`我的问题是,可以根据其封闭结构字段之一(在本例中为 Me...
如果它适合你的情况,你可以简单地将验证移动到父结构:
validate := validator.New()varboolTestboolerr := validate.Var(boolTest,"required")iferr !=nil{ fmt.Println(err) }varstringTeststring=""err = validate.Var(stringTest,"required")iferr !=nil{ fmt.Println(err) }varemailTeststring="test@126.com"err = validate.Var(emailTest,"email")iferr...
kinyou102 声望 PHP全栈工程师 @ ABC
Namestring`validate:"required"` Sexstring`validate:"required"` } 1. 2. 3. 4. 5. 6. 初始化结构体并做参数校验: funcInitUserInfo(id,ageint,name,sexstring)*UserInfo{ // new一个校验器 valid:=validator.New() // 初始化UserInfo userInfo:=&UserInfo{ ...
假设我们有如下结构体: type User struct { Id int Name string Bio str...
= nil { fmt.Println(errs.Error()) } // 变量验证 m := map[string]string{"": "", "val3": "val3"} errs = validate.Var(m, "required,dive,keys,required,endkeys,required") if errs != nil { fmt.Println(errs.Error()) } }...
BeginTime string `validate:"required||datetime=H:i"` } type Student struct { Uid int64 `validate:"required||integer=10000,_"` Name string `validate:"required||string=1,5"` Age int64 `validate:"required||integer=10,30"` Sex string `validate:"required||in=male,female"` ...
data, err := validate.FromRequest(r)iferr !=nil{panic(err) } v := data.Create()// setting rulesv.FilterRule("age","int")// convert value to intv.AddRule("name","required") v.AddRule("name","minLen",7) v.AddRule("age","max",99)ifv.Validate() {// validate ok// do so...