我正在使用此库来验证我的 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"`
}
- 2 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消