bytedance/go-tagexpr

自定义函数的逻辑运算问题

Closed this issue · 3 comments

type TStruct struct {
	TOk string `vd:"gt($,'0') && gt($, '1')" json:"t_ok"`
	//TFail string `vd:"gt($,'0')" json:"t_fail"`
}

func TInit() {
	validator.RegFunc("gt", func(args ...interface{}) error {
		return errors.New("force error")
	})
}
func Test_tagexpr(t *testing.T) {
	TInit()
	fmt.Printf("%+v\n", validator.Validate(&TStruct{TOk: "1" /*TFail: "1"*/}))
}

如上代码
自定义了“gt”函数,TFail字段单独使用gt函数,validate会报错,符合预期;
但是TOk字段,对两个gt函数执行了逻辑运算,validate会通过,不符合预期。

我测试符合预期,是不是版本问题?升级到最新版本试试?
image

了解了。我自动拉取的是2.7.4版本。
2.7.4以后版本加了go mod文件,没能通过go get -u更新。

import 路径加 /v2 ,另外不建议加 -u ,它会更新全部依赖,可能出现不符合预期的bug