Golang验证器使用
在Golang中如何使用验证器进行数据验证?有没有推荐的验证库?比如验证用户输入的表单数据是否符合要求,或者验证API请求参数的合法性。希望能提供一些具体的代码示例和最佳实践,特别是如何处理复杂的验证逻辑和自定义验证规则。
        
          2 回复
        
      
      
        Golang常用验证器库如go-playground/validator,通过结构体标签定义规则,如validate:"required,email"。支持自定义验证函数,结合Gin等框架可自动校验请求参数,简洁高效。
更多关于Golang验证器使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,验证器(validator)用于验证数据的合法性,例如结构体字段的格式、范围或自定义规则。常用的库是go-playground/validator,它基于结构体标签(tags)定义验证规则。
安装
使用以下命令安装:
go get github.com/go-playground/validator/v10
基本用法
- 
导入包:
import "github.com/go-playground/validator/v10" - 
定义结构体并添加标签:
type User struct { Name string `validate:"required,min=3,max=20"` Email string `validate:"required,email"` Age int `validate:"gte=18,lte=100"` }required:字段不能为空。min=3:字符串最小长度3。email:必须为邮箱格式。gte=18:数值大于等于18。
 - 
验证数据:
func main() { validate := validator.New() user := User{ Name: "Alice", Email: "alice@example.com", Age: 25, } err := validate.Struct(user) if err != nil { // 处理错误 for _, err := range err.(validator.ValidationErrors) { fmt.Println(err.Field(), err.Tag(), err.Param()) } return } fmt.Println("验证成功!") } 
常用验证标签
- 字符串:
required、min、max、email、url。 - 数值:
gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)。 - 其他:
eq(等于)、ne(不等于)。 
自定义验证
使用RegisterValidation添加自定义规则:
func customRule(fl validator.FieldLevel) bool {
    return fl.Field().String() == "allowed"
}
validate.RegisterValidation("allowed", customRule)
结构体标签:Field string validate:"allowed"。
处理错误
验证失败会返回ValidationErrors,可遍历获取具体错误信息。
注意事项
- 确保结构体字段为导出字段(首字母大写)。
 - 验证器支持嵌套结构体验证。
 
通过标签和简单代码即可高效实现数据验证,适用于API请求参数校验等场景。
        
      
                    
                    
                    
