go-gin binding 标签详解

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"`
}
相关推荐
机灵猫2 小时前
守卫系统的最后一道防线:深入 Sentinel 限流降级与熔断机制(对比 Hystrix)
java·hystrix·sentinel
教练、我想打篮球2 小时前
124 记一次 大模型无限输出 “--“ 导致的短时间频繁 ygc
java·flow·ygc
while(1){yan}2 小时前
Spring日志
java·后端·spring
小肖爱笑不爱笑2 小时前
Maven
java·log4j·maven
FreeBuf_2 小时前
攻击者伪造Jackson JSON库入侵Maven中央仓库
java·json·maven
xun-ming2 小时前
JVM实战中5个核心概念
java
风筝在晴天搁浅2 小时前
hot100 146.LRU缓存
java·缓存
liliangcsdn2 小时前
MySQL存储字节类数据的方案示例
java·前端·数据库
lbb 小魔仙2 小时前
【Java】Spring Cloud 核心组件详解:Eureka、Ribbon、Feign 与 Hystrix
java·spring cloud·eureka