gpt4 book ai didi

validation - 如何在 golang 中使用 ozzo 验证执行条件所需的验证?

转载 作者:数据小太阳 更新时间:2023-10-29 03:04:27 24 4
gpt4 key购买 nike

在 Golang ozzo-validation 中,如何验证依赖于另一个字段的字段?

例如,如果我有以下内容:

return validation.ValidateStruct(&c,
validation.Field(&c.Name, validation.Required, validation.Length(5, 20)),

validation.Field(&c.Gender, validation.In("Female", "Male")),

validation.Field(&c.Email, is.Email),

validation.Field(&c.Address),

如何添加验证以确保仅当电子邮件不为空时才需要地址?

最佳答案

您可以通过两种方式实现它-

  • 添加您自己的 custom rules
  • 根据前提条件值有条件地添加 FieldRules,即在创建字段规则时检查 Email,然后将其提供给 validation.ValidateStruct

例如:

type Sample struct {
Name string
Gender string
Email string
Address Address
}

type Address struct {
// ... fields
}

func (s Sample) Validate() error {
var fieldRules []*validation.FieldRules

fieldRules = append(fieldRules, validation.Field(&s.Name, validation.Required, validation.Length(5, 20)))
fieldRules = append(fieldRules, validation.Field(&s.Gender, validation.In("Female", "Male")))
fieldRules = append(fieldRules, validation.Field(&s.Email, is.Email))

if len(strings.TrimSpace(s.Email)) > 0 {
fieldRules = append(fieldRules, validation.Field(&s.Address, validation.Required))
fieldRules = append(fieldRules, validation.Field(&s.Address))
}

return validation.ValidateStruct(&s, fieldRules...)
}

关于validation - 如何在 golang 中使用 ozzo 验证执行条件所需的验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com