Go 結構體標籤表示式 v1.0 釋出,成引數校驗殺手鐗
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')"` Ageint`vd:"$>0"` } info := &InfoRequest{Name: "Alice", Age: 18} fmt.Println(vd.Validate(info) == nil) // Output: // true }