为了账号安全,请及时绑定邮箱和手机立即绑定

仅当填充 Go 结构字段时才对其进行验证

仅当填充 Go 结构字段时才对其进行验证

Go
紫衣仙女 2022-09-19 21:23:47
我正在使用此库来验证我的 Go 结构。https://pkg.go.dev/github.com/go-playground/validator/v10如何仅在填充字段时才对其进行验证?例如,我的一个结构中有一个可选的电话号码字段。如果用户提供了此值,我想使用 E.164 格式对其进行验证。Phone string  `validate:"e164"`我搜索了“可选”标签,但找不到。
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

正如有关多个验证器的库文档所述,

字段上的多个验证程序将按定义的顺序进行处理。

如上所述@Flimzy,您可以使用 omitempty 来验证结构上的可选字段,但应排在列表的第一位。否则,将对其进行验证并收到错误。omitempty

Phone string `validate:"omitempty,e164"`

简单的代码证明如下,您可以在操场上奔跑

package main


import (

    "github.com/go-playground/validator/v10"

    "log"

)


func main() {

    sv := validator.New()


    res := Response{}

    err := sv.Struct(&res)

    if err != nil {

        log.Fatalln(err) // no error

    }


    res2 := Response2{}

    err = sv.Struct(&res2)

    if err != nil {

        log.Fatalln(err) // error

    }


}


type Response struct {

    Phone string `validate:"omitempty,e164"`

}

type Response2 struct {

    Phone string  `validate:"e164,omitempty"`

}


查看完整回答
反对 回复 2022-09-19
?
www说

TA贡献1775条经验 获得超8个赞

使用省略号标记。

Phone string  `validate:"e164,omitempty"`


查看完整回答
反对 回复 2022-09-19
  • 2 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信