Как я могу преобразовать Go validator.FieldLevel.Field () в массив строк - PullRequest
0 голосов
/ 12 февраля 2020

У меня сложный объект с этой структурой.

type People struct {
    Objectives    []string  `validate:"required,ValidateCustom" json:"Objectives"`
}

И мне нужно проверить мышление списка в перечислении, используя gopkg.in/go-playground/validator.v9:

//ValidateCustom -- ValidateCustom
func ValidateCustom(field validator.FieldLevel) bool {
    switch strings.ToUpper(field.Field().String()) {
    case "emumA":
    case "enumB":
        return true
    default:
        return false
    }
}

В этом примере используется идея строки, но как я могу построить в [] строку для итерации?

1 Ответ

0 голосов
/ 12 февраля 2020

Я нашел ответ ... используя слайс и интерфейс

//ValidateCustom -- ValidateCustom
func ValidateCustom(field validator.FieldLevel) bool {
  inter := field.Field()
  slice, ok := inter.Interface().([]string)
  if !ok {
      return false
  }
  for _, v := range slice {
      switch strings.ToUpper(v) {
         case "enumA":
         case "enumB":
           return true
         default:
           return false
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...