如何像 Javascript 的 Joi 一样验证 Go 对象数据?

我使用Joi在 JavaScript 中执行对象模式和数据验证。在 Golang 中,我知道如何进行模式验证,但我如何进行数据验证?

Golang 是否有 Joi 等价物?我知道 Godog,但它还没有达到 1.0。


呼如林
浏览 88回答 1
1回答

拉莫斯之舞

尝试 ozzo-validation package mainimport (    "fmt"    "regexp"    "github.com/go-ozzo/ozzo-validation"    "github.com/go-ozzo/ozzo-validation/is")type Address struct {    Street string    City   string    State  string    Zip    string}func (a Address) Validate() error {    return validation.ValidateStruct(&a,        // Street cannot be empty, and the length must between 5 and 50        validation.Field(&a.Street, validation.Required, validation.Length(5, 50)),        // City cannot be empty, and the length must between 5 and 50        validation.Field(&a.City, validation.Required, validation.Length(5, 50)),        // State cannot be empty, and must be a string consisting of two letters in upper case        validation.Field(&a.State, validation.Required, validation.Match(regexp.MustCompile("^[A-Z]{2}$"))),        // State cannot be empty, and must be a string consisting of five digits        validation.Field(&a.Zip, validation.Required, validation.Match(regexp.MustCompile("^[0-9]{5}$"))),    )}func main() {    a := Address{        Street: "123",        City:   "Unknown",        State:  "Virginia",        Zip:    "12345",    }    err := a.Validate()    fmt.Println(err)    // Output:    // Street: the length must be between 5 and 50; State: must be in a valid format.}
打开App,查看更多内容
随时随地看视频慕课网APP