go中validate包使用教程

文章目录

  • 前言
  • 安装
  • 简单使用
  • 错误处理
  • 翻译器
  • Validator库介绍
    • 校验语法常用标记
  • 自定义校验
    • 需求【校验车身颜色】

前言

在go项目中,经常有校验数据合法性的需求,比如邮箱、年龄、车牌号、网址、字符串长度、金额、枚举范围等。一个好的校验包能帮我们少写很多ifelse,提高系统的可维护性。
validate包内置了丰富的校验语法,包括字符串、数字、邮箱等,当然如果我们有定制化的校验提示文案或者校验规则,validate也支持定制化校验。

安装

# 安装validate包
$ go get github.com/go-playground/validator/v10
# 项目中引入包
import "github.com/go-playground/validator/v10"

简单使用

校验语法:在字段tag上,也就是字段类型后面的`xxx`里内容,加上validate:“yyy”,其中yyy就是validate的校验语法;
校验方法:使用err := validate.Struct(u)进行校验,err是校验结果
结果输出:我们可以对err进行反射判断处理,可以获取字段名等信息,定制化输出校验结果
下面是一个简单示例:


import (
	"fmt"
	"github.com/go-playground/locales/zh"
	ut "github.com/go-playground/universal-translator"
	"github.com/go-playground/validator/v10"
	zhTrans "github.com/go-playground/validator/v10/translations/zh"
)

type User struct {
	Name  string
	Age   int    `validate:"required,gte=18,lte=55"`
	Email string `validate:"required,email"`
}

func ValidTestSimple() {
	u := &User{
		Name:  "tt",
		Age:   12,
		Email: "abcde@gmail",
	}

	validSimple := validator.New()
	err := validSimple.Struct(u)
	if err != nil {
		for _, e := range err.(validator.ValidationErrors) {
			fmt.Printf(e.String())
			fmt.Println()
		}
	} else {
		fmt.Println("validate success!")
	}
}
func main() {
	ValidTestSimple()
}

让我们看看输出

Key: 'User.Age' Error:Field validation for 'Age' failed on the 'gte' 

你可能感兴趣的:(go,golang,开发语言)