Validation 如何使用go验证程序在嵌入式结构上运行自定义验证函数

Validation 如何使用go验证程序在嵌入式结构上运行自定义验证函数,validation,go,Validation,Go,我正在尝试使用GoPlayGrands验证程序包为结构注册自定义验证 我遇到的问题是,没有为嵌入式结构调用我注册的自定义验证器函数 下面是一个完整的工作示例: 那么,如何在嵌入式结构上运行结构级验证呢 编辑* 具体地说,我不想使用常规结构验证,因为我希望同一类型有多个标记 我的意思是使用: validator.RegisterStructValidation(SomeFunc, decimal.Decimal) 这对我不起作用,因为我希望为同一类型提供多个标记的灵活性。有时我希望小数点是po

我正在尝试使用GoPlayGrands验证程序包为结构注册自定义验证

我遇到的问题是,没有为嵌入式结构调用我注册的自定义验证器函数

下面是一个完整的工作示例:

那么,如何在嵌入式结构上运行结构级验证呢

编辑*

具体地说,我不想使用常规结构验证,因为我希望同一类型有多个标记

我的意思是使用:

validator.RegisterStructValidation(SomeFunc, decimal.Decimal)
这对我不起作用,因为我希望为同一类型提供多个标记的灵活性。有时我希望小数点是pos,有时是neg等等

编辑2* 以下是链接中的代码:

主程序包
进口(
“fmt”
“github.com/shopspring/decimal”
“gopkg.in/go游乐场/validator.v9”
)
类型decimalPosRequest结构{
MoneyAmount decimal.decimal`validate:“decimalpos”`//正在尝试验证此值
}
func main(){
val:=validator.New()
val.RegisterValidation(`decimalpos',ValidateCimalPositive)
请求:=decimalPosRequest{MoneyAmount:decimal.NewFromFloat(-1.0)}
错误:=val.Struct(&request)
如果err==nil{
fmt.Println(“错误!本应失败但未成功”)
}
}
func ValidateDecimalPositive(fl validator.FieldLevel)bool{//由于某种原因,从未调用此函数
//十进制
值:=fl.Field().Interface()(十进制.十进制)
//检查结果是肯定的
返回值.IsPositive()
}