bytedance / go-tagexpr

An interesting go struct tag expression syntax for field validation, etc.
Apache License 2.0
1.66k stars 142 forks source link

RegFunc中支持返回string的custom type吗 #80

Open byteneco opened 7 months ago

byteneco commented 7 months ago

场景

对自定义枚举值想调用自己的validate method

比如

type Status string

func (s Status) Validate() error { ... }

type Entity struct {
    Status Status `vd:"evalfn($)"`
}

type ValidateFn interface {
    Validate() error
}

func useValidateFn(args ...interface{}) error {
    target, ok := args[0].(ValidateFn)
    if !ok {
        return fmt.Errorf("evalfn need struct implement ValidateFn interface")
    }
    return target.Validate()
}

这里args[0]的值类型会是string