type CoolName struct {
Foo string `json:"foo"`
Bar string `json:"bar"`
}
Run Code Online (Sandbox Code Playgroud)
使用 Go 验证器,我只想将这两个字段之一设为必填,如果这两个字段的内容都已满,则给出错误。
我用过required_without,但它只对需要其中之一有帮助。我不知道如何验证两个字段是否同时没有内容。
我刚刚花了一些时间来解决同样的问题,但我似乎已经弄清楚了:
type CoolName struct {
Foo string `json:"foo" validate:"required_without=Bar,excluded_with=Bar"`
Bar string `json:"bar" validate:"required_without=Foo,excluded_with=Foo"`
}
Run Code Online (Sandbox Code Playgroud)
这确实有效,甚至还有一定道理。_with但是,我发现/标签上的文档_without有点误导:
仅当任何其他指定字段不存在时,验证字段必须存在且不为空。
对我来说,这意味着“字段必须存在 <=>(当且仅当)其他字段不存在”。