Heim > Artikel > Backend-Entwicklung > Golang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren
php小编香蕉在使用golang的gookit validate时发现一个问题,即它并不适用于全局自定义验证器。gookit validate是一个方便且强大的验证库,它提供了许多内置的验证规则,但在对于全局自定义验证规则的支持上存在一些限制。这可能会给开发者带来一些困扰,因此在使用gookit validate时需要注意这一点。接下来,我们将详细探讨这个问题,并提供一些解决方案。
我正在尝试使用 golang gookit 验证器并添加自定义验证器,但该函数从未被触发。
package main import ( "fmt" "github.com/gookit/validate" ) type Sample struct { Name string `json:"name" validate:"required"` Addres string `json:"address" validate:"required"` Payment string `json:"payment" validate:"payment_method"` } func main() { validate.AddValidator("payment_method", func(val interface{}) bool { value, ok := val.(string) fmt.Println(value) if !ok { return false } if value != "hello" { return false } return true }) s := Sample{Name: "name", Addres: "address", Payment: ""} v := validate.Struct(&s) res := v.Validate() if !res { fmt.Println(v.Errors.OneError()) } else { fmt.Println("SUCCESS") } }
结果将始终是成功的,并且自定义验证器永远不会被调用。直接在 go playground 上
您需要在配置中明确提及,
不跳过空值
如下所示:
validate.Config(func(opt *validate.GlobalOption) { opt.SkipOnEmpty = false })
然后,运行代码,它就会工作
Das obige ist der detaillierte Inhalt vonGolang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!