【问题标题】:How to use fl.GetStructFieldOKAdvanced2() of go validator v10如何使用 go validator v10 的 fl.GetStructFieldOKAdvanced2()
【发布时间】:2022-11-22 16:21:44
【问题描述】:

我不明白GetStructFieldOKAdvanced2(val reflect.Value, namespace string)函数的使用

医生说:

GetStructFieldOKAdvanced2 与 GetStructFieldOK 相同,除了 它接受父结构开始寻找字段和 命名空间允许验证器具有更多的可扩展性。

它需要2个参数,第一个是reflect.Value类型,第二个是命名空间string

我不明白为什么它需要 reflect.Value 类型,我应该传递给它什么?

任何人都可以解释应该使用此功能的场景吗?

我问的原因是文档在解释它以及如何使用它时不是很清楚

谢谢,...

【问题讨论】:

  • “我应该传递给它什么?”-- 包含由给定命名空间表示的字段的结构实例。
  • 谢谢,我现在明白了

标签: go validation


【解决方案1】:

感谢@mkopriva,

此函数可用于获取其他字段值

像这样使用它:

func checkValidity(fl validator.FieldLevel) bool {
   otherFieldValue, _, _, ok := fl.GetStructFieldOKAdvanced2(fl.Parent(), "CompanyID")
 
   // other stuff...
}

他们为什么不这样写函数签名:

GetStructFieldOKAdvanced2(struct reflect.Value, field string)

这种方式对于初学者来说更容易理解。

【讨论】:

    猜你喜欢
    • 2022-08-24
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2022-11-02
    • 2022-10-15
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多