somebug
@somebug

Как передать значение константы в тег структуры?

Есть код:
const (
	MIN = 60 * 10
	MAX = 60 * 24 * 24 * 30
)

type Item struct {
	Seconds int `valid:"required,range(MIN|MAX)"`
}

func NewItem(seconds int) (*Item, error) {
	item := &Item{
		Seconds: seconds,
	}

	_, err := govalidator.ValidateStruct(item)
	if err != nil {
		return nil, fmt.Errorf(err.Error())
	}

	return item, nil
}

play.golang.org

Возможно ли передать значение констант (MIN,MAX) в тег "valid"?
Что-то типа этого:
Seconds int `valid:"required,range(${MIN}|${MAX})"`


UPD
https://github.com/golang/go/issues/4740#issuecomm...
  • Вопрос задан
  • 264 просмотра
Решения вопроса 2
Нельзя, тег структуры это строковый литерал.
https://golang.org/ref/spec#Struct_types
Ответ написан
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer
Это невозможно сделать, максимум, вы можете сделать такую строку:
s := strings.Join([]string{"required,", "range(", MIN.String(), "|", MAX.String(), ")"}, "")

А вот как ее вставить в `valid:` это уже вопрос
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Visteras
Любознателен, интересуюсь новым и старым :)
Разве что через генератор сделать генерацию уже с указанными значениями, но это все равно будет простым строковым литералом. Так что только через генератор если подобных значений много.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 23:46
20000 руб./за проект
24 нояб. 2024, в 23:07
2000 руб./за проект