go-tagexprGo 结构体标签表达式

联合创作 · 2023-09-30 20:12

go-tagexpr 由字节跳动开源,实现了 Golang 结构体标签表达式解释器,可用于各种场景的请求参数校验。


主要特性:



  • 支持各种常用运算符


  • 支持访问数组、切片、字典的成员


  • 支持访问当前结构中任意字段


  • 支持访问嵌套字段、非导出字段等


  • 内置 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
}
浏览 14
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报