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

建议支持验证数组跟切片的所有元素 #12

Closed zwczou closed 3 years ago

zwczou commented 4 years ago

现在只能指定验证某个索引的元素,针对那种需要验证切片所有元素的情况下没发操作

yiya1989 commented 3 years ago

有相同诉求,建议类似 go-playground/validator.v9 中dive的用法一样。可以往下深钻数组

andeya commented 3 years ago

这是已经支持的,比如这里就有个 test https://github.com/bytedance/go-tagexpr/blob/master/validator/validator_test.go#L258

zwczou commented 3 years ago

抱歉,我为什么还是看不出来那个例子里面有验证数组所有子元素的规则

andeya commented 3 years ago

哦,我大概理解了,你是希望能在数组字段上通过tag验证每一个元素?我以为指的是如果数组元素是struct时自动下钻验证呢。

zwczou commented 3 years ago

是的。目前只能用[i]这样验证具体某一个,但是对切片长度不固定的。可能需要验证所有的元素。

andeya commented 3 years ago

@yiya1989 @zwczou 已经支持:

Operator or Operand Explain
range(KvExpr, forEachExpr) Iterate over an array, slice, or dictionary
- #k is the element key var
- #v is the element value var
- ## is the number of elements
- e.g. example