Go結構體標籤表示式v1.0釋出,引數校驗殺手鐗

HenryLee發表於2019-01-29

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
}
複製程式碼

更多語法詳情,請轉到Github原始碼倉庫:github.com/bytedance/g…

相關文章