Go语言 规则中的ozzo验证返回相等值的错误

e4yzc0pl  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(147)

我有一个简单的代码,使用echo作为引擎和ozzo-validation作为请求验证器。

  1. func (a MyRequest) Validate() error {
  2. return validation.ValidateStruct(
  3. &a,
  4. validation.Field(&a.Value,
  5. validation.Required,
  6. validation.Length(1, 5),
  7. validation.Each(validation.NilOrNotEmpty, validation.In([]string{"true", "false"}),
  8. ),
  9. ),
  10. )
  11. }

这是我发送的请求:

  1. {"value":["true"]}

我从In规则得到这个错误:

  1. value: (0: must be a valid value.).

但是当我检查==reflect.DeppEqual的值时,值是相等的:

  1. fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0]))
  2. fmt.Println([]string{"true", "false"}[0] == a.Value[0])
  3. output:
  4. true
  5. true

我做错了什么?

dzhpxtsq

dzhpxtsq1#

使用validation.Each(validation.In([]string{"true", "false"}))Value切片中的每个元素与提供给validate.In的切片进行比较,即[]string{"true", "false"}
使用validation.In("true", "false")Value切片中的每个元素与validate.In中的各个值进行比较。

相关问题