字節跳動開源Go結構體標籤表達式解釋器,成請求參數校驗的殺手鐗

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源碼倉庫:https://github.com/bytedance/...函數

相關文章
相關標籤/搜索