前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
错误示范
package main import ( "fmt" "github.com/go-playground/validator/v10" ) type Person struct { Name string `validate:"required"` State int `validate:"required,oneof=0 1"` } func main() { validate := validator.New() p := Person{ Name: "abcc", State: 0, } err := validate.Struct(p) // Key: 'Person.State' Error:Field validation for 'State' failed on the 'required' tag fmt.Println(err) }
在这个例子中,虽然我们的 State
字段传入了值,但是验证却不通过。
正确示范
在使用 go-playground/validator/v10
验证一些空值的时候,需要使用指针类型。
package main import ( "fmt" "github.com/go-playground/validator/v10" ) type Person struct { Name string `validate:"required"` // 使用指针类型 State *int `validate:"required,oneof=0 1"` } func main() { validate := validator.New() state := 0 p := Person{ Name: "abcc", State: &state, // 传入指针 } err := validate.Struct(p) // <nil> fmt.Println(err) }