Можно ли ссылаться на константы в определениях тегов полей структуры?

# #go

Вопрос:

У меня есть модели базы данных и JSON, которые используют аннотации полей структуры для различных целей, а именно для указания перечислений, какие значения приемлемы для проверки и т.д.

Пример модели базы данных:

 type QRCode struct {
    Algorithm  string  `json:"algorithm" gorm:"type:enum('hmac-sha3-256-v1')" validate:"oneof=hmac-sha3-256-v1"`
    PublicCode []byte  `json:"token" gorm:"size:32" validate:"len=32"`
    UserType   string  `json:"user_type" gorm:"type:enum('admin','member')" validate:"one_of=admin member"`

    gorm.Model
}
 

Таким образом, в этом случае существует несколько различных констант:

  • размер открытого ключа, который у меня есть в constants.QRCodePublicCodeLength
  • алгоритм, который у меня есть в constants.QRCodeAlgorithmV1
  • тип пользователя, который у меня есть в constants.UserTypeAdmin и constants.UserTypeMember

Было бы очень приятно иметь возможность встроить эти константы в теги полей, чтобы для всего был действительно один источник истины, но я не знаю, возможно ли это в Go.

Могу ли я использовать константы в определениях тегов полей структуры?

Ответ №1:

Могу ли я использовать константы в определениях тегов полей структуры?

Нет, это невозможно.