🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 验证器 ## validator ```go package main import ( "fmt" "github.com/go-playground/validator/v10" ) // Validate 全局验证器 var Validate *validator.Validate func init() { Validate = validator.New() } // User 结构体 type User struct { Name string `json:"name" validate:"required"` //名称,必须 Gender int `json:"gender"` //性别,不做要求 Age int `json:"age" validate:"gte=0,lte=130"` //年龄,0-130 Email string `json:"email" validate:"required,email"` //邮箱,必须 Book Book `json:"book validate,dive,validate"` //书籍结构体,必须 } // Book 书籍 type Book struct { Edu string `json:"edu"` Fiction string `json:"fiction" validate:"required"` // 必须 } // Validate 结构体封装验证器 func (c *User) Validate() { err := Validate.Struct(c) if err != nil { c.ErrArgs(err) } return } // ErrArgs 结构体封装错误返回 func (c *User) ErrArgs(err error) { fmt.Println(err) } func main() { // 1.模拟前端传值 user := &User{ Name: "小明", // 不能为空 Age: 23, //年龄超过130岁 Email: "foo@@bar.com", // 不能为空,且为邮箱格式 Book: Book{ Edu: "离散数学及其应用", // 无要求 //Fiction: "鹿鼎记", // 不能为空 }, } // 2.使用验证器校验 // 注:验证不通过直接返回错误给web端 user.Validate() } ``` 打印结果 ```bash Key: 'User.Email' Error:Field validation for 'Email' failed on the 'email' tag Key: 'User.Book.Fiction' Error:Field validation for 'Fiction' failed on the 'required' tag ```