![fd7ac8a09d81335d468fc539f06edf9d.png](https://img-blog.csdnimg.cn/img_convert/fd7ac8a09d81335d468fc539f06edf9d.png)
点击右上方,关注开源中国OSC头条号,获取最新技术资讯
go-tagexpr 由字节跳动开源,实现了 Golang 结构体标签表达式解释器,可用于各种场景的请求参数校验。
主要特性:
- 支持各种常用运算符
- 支持访问数组、切片、字典的成员
- 支持访问当前结构中任意字段
- 支持访问嵌套字段、非导出字段等
- 内置 len、sprintf、regexp 函数
- 支持单表达式与多表达式两种定义模式
- 提供了参数校验子包
可以看一个参数校验的小例子:
package validator_testimport ("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