Go结构体标签表达式v1.0发布,参数校验杀手锏

go-tagexpr 是一个由字节跳动开源的 Golang 结构体标签表达式解释器。它主要应用于各类场景的请求参数校验,且性能高效,成为参数校验的杀手锏。git

主要特性:github

  • 支持各类经常使用运算符
  • 支持访问数组、切片、字典的成员
  • 支持访问当前结构中任意字段
  • 支持访问嵌套字段、非导出字段等
  • 内置 len、sprintf、regexp 函数
  • 支持单表达式与多表达式两种定义模式
  • 提供了参数校验子包

看一个参数校验的小例子:数组

package validator_test

import (
	"fmt"

	"github.com/bytedance/go-tagexpr/validator"
)

func Example() {
	var vd = validator.New("vd")

	type InfoRequest struct {
		Name string `vd:"($!='Alice'||(Age)$==18) && regexp('\\w')"`
		Age  int    `vd:"$>0"`
	}
	info := &InfoRequest{Name: "Alice", Age: 18}
	fmt.Println(vd.Validate(info) == nil)
	// Output:
	// true
}
复制代码

更多语法详情,请转到Github源码仓库:github.com/bytedance/g…函数

相关文章
相关标签/搜索