В моей программе Go есть значения конфигурации, которые я хочу быть постоянными на время выполнения программы, но я хочу иметь возможность изменять их на месте развертывания. Насколько я могу судить, нет никакого способа добиться этого с помощью ключевого слова const
, так как (опять же, насколько я могу судить) его значение должно быть константой, указанной в времени компиляции. Это означает, что единственный способ достичь того, что я хочу, - объявить нормальные переменные и инициализировать их во время функциипакета. Дело не в том, что это не сработает, а в том, что теперь не будет ничего, что бы не могло изменить эти значения псевдопостоянства.Константы в Go, установленные во время инициализации
Мои два вопроса:
- я упускаю что-то о том, как
const
работает? - Предполагая, что я не являюсь, каким образом этот способ лучше всего подходит? Публичная функция, которая возвращает закрытую переменную, которую я никогда не раскрываю, никогда не меняя ее? Просто надеясь, что люди не изменят переменные, так как они действительно настройки конфигурации?
Вы можете создать тип, содержащий личные переменные (устанавливаемые изнутри этого модуля, но не снаружи). Затем добавьте функции доступа к типу. Это не совсем то же самое, но это так. – Crisfole
Еще лучше: создайте файл «config.go», создайте vars, который хотите открыть, но не экспортируйте их (все в нижнем регистре). Затем создайте общедоступный (верхний регистр) 'func', который дает доступ к каждому элементу. Не нужен тип, просто модуль. – Crisfole
Если вы ответите, @ChristopherPfohl, я выберу его. –