企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 验证器 ## 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 ```