我有一個簡單的程式碼,使用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
我在這裡做錯了什麼?
使用validation.Each(validation.In([]string{"true", "false"}))
會將Value
切片中的每個元素與提供給validate.In
的切片進行比較,即[]string{ “真”,“假”}
。
使用validation.In("true", "false")
將Value
切片中的每個元素與validate.In
中的各個值進行比較。
以上是規則中的 ozzo 驗證對於相等值傳回錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!