Как получить доступ к члену const enum косвенно через переменную? - PullRequest
1 голос
/ 02 ноября 2019

У меня есть константное перечисление типа

const(
PROD_BASEURL="http://prod.abc.com"
TEST_BASEURL="http://test.abc.com"
)

В одной из моих функций я принимаю окружение в качестве входных данных и хочу получить доступ к константным членам соответственно.

envUrl := env + "_BASEURL"

Здесь envэто вход, который может быть PROD или TEST. Теперь, как я могу получить доступ к членам const через переменную envUrl без непосредственного указания PROD_BASEURL?

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Мне кажется, что ваш вариант использования требует карту . С картой вы можете написать свой код так:

baseurls := map[string]string{
    "PROD": "http://prod.abc.com",
    "TEST": "http://test.abc.com",
}

envUrl := baseurls[env]
0 голосов
/ 02 ноября 2019

Один из способов сделать это - использовать структуры вместо констант:

type EnvSet struct {
   BaseURL string
   // other env specific setting
}

var Prod =EnvSet{BaseURL:"...",...}
var Dev = EnvSet{BaseURL:"...",...}

var selectedEnv EnvSet
switch env {
  case "prod": selectedEnv=Prod
  case "dev": selectedEnv=Dev
}
...