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

我正在使用此库来验证我的 Go 结构。https://pkg.go.dev/github.com/go-playground/validator/v10

如何仅在填充字段时才对其进行验证?例如,我的一个结构中有一个可选的电话号码字段。如果用户提供了此值,我想使用 E.164 格式对其进行验证。

Phone string  `validate:"e164"`

我搜索了“可选”标签,但找不到。


紫衣仙女
浏览 76回答 2
2回答

慕妹3242003

正如有关多个验证器的库文档所述,字段上的多个验证程序将按定义的顺序进行处理。如上所述@Flimzy,您可以使用 omitempty 来验证结构上的可选字段,但应排在列表的第一位。否则,将对其进行验证并收到错误。omitemptyPhone string `validate:"omitempty,e164"`简单的代码证明如下,您可以在操场上奔跑package mainimport (    "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"`}

www说

使用省略号标记。Phone string  `validate:"e164,omitempty"`
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go