Как я могу преобразовать Go validator.FieldLevel.Field() в массив строк

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

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 ответ

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

//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
     }
}
Другие вопросы по тегам