Как использовать переменные среды в Golang из файлов .env
Переменные среды — это пары ключ-значение , которые задаются в среде операционной системы. Вы можете использовать их для хранения информации о конфигурации , такой как строки подключения к базе данных, ключи API, пути к файлам или другие значения, необходимые приложению.
В Golang легко управлять переменными среды. Вы можете установить новые переменные среды для своего приложения, получить значения и удалить существующие.
У вас также есть возможность загружать переменные среды из файлов .env в Go. Таким образом, вы можете установить несколько переменных одновременно, не делая этого по отдельности.
Как установить переменные среды в Golang
Чтобы установить переменные среды в Golang, вы можете использовать os.Setenv
функцию из os
пакета.
Синтаксис:
os.Setenv(key,value)
Setenv()
функция принимает 2 аргумента: ключ для переменной среды и значение.
package main import ( "fmt" "os" ) func main() { // Set environment variable os.Setenv("API_KEY", "f5adb47-5671-4cc6-bb0b-648cfd177d17") }
В этом примере мы сохраняем ключ API в переменной среды с именем « API_KEY » со значением. Мы можем получить это значение внутри нашего приложения, используя ключ.
Как получить переменные среды в Golang
Вы можете получить доступ к переменным среды, используя os
пакет. В этом пакете есть os.Getenv()
функция, которая принимает ключ и возвращает значение этого ключа.
package main import ( "fmt" "os" ) func main() { // Set environment variable os.Setenv("API_KEY", "f5adb47-5671-4cc6-bb0b-648cfd177d17") // Get the value of the environment variable value := os.Getenv("API_KEY") fmt.Printf("Value: %s\n", value) }
Мы вызываем os.Getenv()
функцию с ключом « API_KEY », чтобы получить ее значение. Если вы предоставите несуществующий ключ, он вернет пустую строку.
Эта функция возвращает значение одной переменной среды. Но если вы хотите, вы можете получить все переменные среды сразу.
package main import ( "fmt" "os" ) func main() { // Set environment variable os.Setenv("API_KEY", "f5adb47-5671-4cc6-bb0b-648cfd177d17") // Get all the environment variables values := os.Environ() fmt.Printf("Values: %s\n", values) }
Функция os.Environ()
возвращает все переменные среды из вашей системы в форме « ключ=значение » как фрагмент строки, включая переменные, которые вы установили в своем приложении Golang.
Проверьте, доступна ли переменная среды или нет
Чтобы проверить, доступна ли переменная среды в Go, вы можете использовать функцию os.LookupEnv()
. Это поможет вам убедиться, что значение доступно, прежде чем использовать его.
package main import ( "fmt" "os" ) func main() { // Set environment variable os.Setenv("API_KEY", "f5adb47-5671-4cc6-bb0b-648cfd177d17") // Check If an Environment Variable is Available or Not value, ok := os.LookupEnv("API_KEY") if ok { fmt.Printf("Values: %v\n", value) } else { fmt.Println("Environment Variable is not available") } }
Когда вы вызываете эту функцию с помощью ключа, она возвращает два значения: значение переменной среды и логическое значение, указывающее, существует переменная или нет.
Присвоим эти значения переменным value
и ok
соответственно.
Внутри if
оператора мы проверяем значение ok
. Если это так true
, это означает, что переменная среды существует, и вы можете использовать значение этой переменной среды.
Если ok
есть false
, это означает, что переменная среды не существует. В этом случае value
переменная содержит пустую строку.
Удаление переменных среды в Golang
Чтобы удалить переменную среды в Golang, вы можете использовать os.Unsetenv()
функцию из os
пакета. Вам нужно вызвать эту функцию с ключом, который вы хотите удалить.
package main import ( "fmt" "os" ) func main() { // Set environment variable os.Setenv("API_KEY", "f5adb47-5671-4cc6-bb0b-648cfd177d17") // Detele environment variable err := os.Unsetenv("API_KEY") if err != nil { fmt.Println("Error deleting environment variable:", err) } else { fmt.Println("Environment variable deleted successfully.") } }
Мы вызываем os.Unsetenv()
функцию с помощью ключа API_KEY . Эта функция удалит указанную переменную среды из среды.
Функция os.Unsetenv
возвращает ошибку, если при удалении переменной среды возникла проблема. Вы можете проверить, есть ли ошибка, и отобразить различные сообщения.
os.Clearenv()
Вы также можете удалить все переменные среды одновременно, вызвав функцию os.Clearenv()
из os
пакета.
Загрузка переменных среды из файлов .env в Go
Загружать переменные среды из .env
файлов лучше, чем загружать их по отдельности. Это поможет вам отделить переменные среды от кода приложения.
Когда вы делитесь своим кодом с другими разработчиками или отправляете его в систему контроля версий, например Git, вы можете удалить файл, .env
и никто не узнает вашу конфиденциальную информацию.
Чтобы загрузить переменные среды из .env
файла в Go, вы можете использовать сторонний пакет, например « godotenv ». Он прочитает файл и установит переменные в вашей системе.
Запустите следующую команду в своем терминале, чтобы установить пакет:
go get github.com/joho/godotenv
Предположим, у вас есть файл .env в каталоге вашего проекта со следующими переменными среды в формате « KEY=VALUE ».
API_KEY=abc123 DB_HOST=localhost DB_PORT=5432
Пакет « godotenv » имеет load()
функцию для загрузки переменных среды из файла .env .
package main import ( "fmt" "log" "os" "github.com/joho/godotenv" ) func main() { // Load environment variables from .env file err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file:", err) } // Access the loaded environment variables apiKey := os.Getenv("API_KEY") dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") // Use the environment variables in your code fmt.Println("API Key:", apiKey) fmt.Println("Database Host:", dbHost) fmt.Println("Database Port:", dbPort) }
Когда вы выполняете эту функцию, она также возвращает ошибку, если при загрузке файла произошла ошибка. Вы можете справиться с этим, зарегистрировав фатальную ошибку.
Наконец, вы можете получить доступ к этим переменным среды внутри вашего кода, используя функцию os.Getenv()
.
Что произойдет, если вы назовете свой файл .env по-другому?
err := godotenv.Load(".env.dev")
По умолчанию godotenv.Load()
функция автоматически считывает .env
файл из каталога вашего проекта. Но если в вашем проекте файл отличается от .evn.dev, вам придется указать имя при вызове функции godotenv.Load()
.
Заключение
Использование переменных среды дает несколько преимуществ, включая улучшенное управление конфигурацией, повышенную переносимость, повышенную безопасность, гибкость и разделение задач.
Golang упрощает обработку переменных среды, предоставляя в os
пакете различные функции. Вы можете установить новые переменные вручную, получить значения и удалить определенную переменную среды из системы.
Используя godotenv
пакет " ", вы можете легко загружать переменные среды из .env
файла в наше приложение Go. Это позволяет легко вносить изменения в конфигурацию без необходимости изменения и повторного развертывания кода.