установить переменную один раз для всего проекта Голанг - PullRequest
0 голосов
/ 29 января 2019

Мне нужна переменная volume_path для моего проекта.

Параметр volume_path установлен в файле .env, поэтому у меня есть 2 определения для него:

.env
.env.testing

В моем кодеЯ установлю переменную на:

var Volume_path = os.Getenv("VOLUME_PATH")

Я знаю, как это сделать, чтобы установить эту переменную в каждом файле, но я хотел бы определить ее только один раз и сделать ее доступной для всего проекта,это возможно?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Предпочтительный способ подойти к этому - установить экземпляр значения переменной в пакете (кроме основного) и использовать его во всей программе,

Пример:

var Volume string

var Volume = os.Getenv("VOLUME_PATH")

Запомните следующее правило:

заглавная буква в верхнем регистре: в противном случае имя будет видно клиентам пакета: имя (или _Name) не будет видно клиентам пакета

См. Голанг с именами

0 голосов
/ 29 января 2019

Просто используйте одну переменную и обращайтесь к этому единственному экземпляру везде, где вам это нужно.

Обратите внимание, что вы не можете ссылаться на идентификаторы, определенные в пакете main, из других пакетов.Так что, если у вас есть несколько пакетов, эта переменная должна быть в не main пакете.Поместите его в пакет example, начните с заглавной буквы (чтобы он экспортировался) и импортируйте пакет example из других пакетов, и вы можете ссылаться на него как example.Volume_path.

Также обратите внимание, что имя Volume_path не является идиоматическим в Go, вы должны назвать его скорее VolumePath.

example.go:

package example

var VolumePath = os.Getenv("VOLUME_PATH")

И в других пакетах:

import (
    "path/to/example"
    "fmt"
)

func something() {
    fmt.Println(example.VolumePath)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...