1.基础验证标签
Go
type User struct {
Name string `binding:"required"` // 必填字段
Age int `binding:"gte=18,lte=100"` // 数值范围
Phone string `binding:"len=11"` // 精确长度
Code string `binding:"min=6,max=8"` // 长度范围
}
2.格式验证标签
Go
type Order struct {
Email string `binding:"required,email"` // 邮箱格式
Website string `binding:"url"` // URL格式
Price string `binding:"regexp=^[0-9.]+$"`// 正则表达式
Birthday string `binding:"datetime=2006-01-02"` // 时间格式
}
3.跨字段验标签
Go
type Login struct {
Password string `binding:"required"`
Confirm string `binding:"required,eqfield=Password"` // 两次输入一致
}
type Profile struct {
Age int `binding:"required,gte=18"`
Role string `binding:"oneof=admin user guest"` // 枚举值验证
}
4.高级验证标签
Go
type Product struct {
Price float64 `binding:"required,gt=0"` // 数值必须大于0
Stock int `binding:"required,lte(100)"` // 数值小于等于100
Tags []string`binding:"dive,required"` // 切片元素验证
}
type Order struct {
Items []Item `binding:"dive,min=1"` // 深度验证切片元素
}
type Item struct {
Qty int `binding:"required"`
}