我有一个简单的代码,使用echo
作为引擎和ozzo-validation
作为请求验证器。
func (a MyRequest) Validate() error {
return validation.ValidateStruct(
&a,
validation.Field(&a.Value,
validation.Required,
validation.Length(1, 5),
validation.Each(validation.NilOrNotEmpty, validation.In([]string{"true", "false"}),
),
),
)
}
这是我发送的请求:
{"value":["true"]}
我从In
规则得到这个错误:
value: (0: must be a valid value.).
但是当我检查==
和reflect.DeppEqual
的值时,值是相等的:
fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0]))
fmt.Println([]string{"true", "false"}[0] == a.Value[0])
output:
true
true
我做错了什么?
1条答案
按热度按时间dzhpxtsq1#
使用
validation.Each(validation.In([]string{"true", "false"}))
将Value
切片中的每个元素与提供给validate.In
的切片进行比较,即[]string{"true", "false"}
。使用
validation.In("true", "false")
将Value
切片中的每个元素与validate.In
中的各个值进行比较。