برنامه خود را برای محیط های مختلف با استفاده از متغیرهای محیط پیکربندی کنید. همچنین یک لایه امنیتی اضافی به برنامه اضافه می کند.
متغیرهای محیطی به صورت پویا جفتهای کلید-مقدار نامیده میشوند که در محیط میزبان کنار گذاشته میشوند تا بر عملیات در حال اجرا برنامهها تأثیر بگذارند.
متغیرهای محیطی برای تعامل با داده های حساس به برنامه محبوب هستند زیرا انتزاعی از رابط محیط ارائه می دهند. می توانید از متغیرهای محیطی برای افزایش امنیت برنامه های خود استفاده کنید.
Go پشتیبانی داخلی برای کار با متغیرهای محیطی ارائه می دهد و بسته های زیادی برای کار با متغیرهای محیطی و فایل های متغیر محیطی (.env) در اکوسیستم Go وجود دارد.
متغیرهای محیطی و بسته سیستم عامل
بسته OS عملکردی را برای تعامل با سیستم عامل محیط میزبان فراهم می کند. بسته os روش هایی را برای تنظیم و بازیابی جفت های کلید-مقدار متغیر محیطی ارائه می دهد.
این بسته ها را برای تنظیم، بارگیری و چاپ متغیرهای محیطی در دستگاه میزبان خود وارد کنید.
import (
"fmt"
"log"
"os"
"strings"
)
شما می توانید جفت های کلید-مقدار متغیر محیطی را با متد Setenv بسته os تنظیم کنید. متد Setenv جفت را می گیرد و خطاهای احتمالی را برمی گرداند.
err := os.Setenv("NAME", "John")
err = os.Setenv("OTHER", "DOE")
if err != nil {
return
}
با متد Getenv می توانید متغیرهای محیط را با کلیدها (نام ها) واکشی کنید. متد Getenv نام متغیر محیطی را می گیرد و مقدار مربوط به کلید را برمی گرداند.
name := os.Getenv("NAME")
other := os.Getenv("OTHER")
متد Environ به شما امکان می دهد به تمام متغیرهای محیطی در دستگاه میزبان خود دسترسی داشته باشید. متد Environ تکهای از رشتهها را برمیگرداند که میتوانید در آن حلقه بزنید و به کلیدهای متغیرهای محیط دسترسی داشته باشید.
for _, variables := range os.Environ() {
envPair := strings.SplitN(variables, "=", 2)
fmt.Println(envPair[0])
}
روش SplitN بسته رشته ها به تقسیم توسط جداکننده کمک می کند. در این حالت، نام متغیر را از مقدار جدا می کند.
نحوه بارگیری متغیرهای محیطی از فایلهای env
بسته godotenv یک پورت Go پروژه Ruby dotenv برای بارگیری متغیرهای محیطی از فایل dotenv است.
بسته godotenv قابلیت هایی را برای کار با فایل های dotenv روی بسته os ارائه می دهد، می توانید از فایل های env بنویسید و بخوانید.
این دستور را برای ایجاد یک فایل .env در پوشه کاری خود اجرا کنید.
touch .env
دستور touch برای ایجاد فایل های جدید استفاده می شود. خطوط کد زیر را به فایل dotenv اضافه کنید. شما از بسته godotenv برای خواندن این متغیرهای محیطی در برنامه Go خود استفاده خواهید کرد.
# env
NAME="John"
OTHER="James"
این دستور را در ترمینال دایرکتوری پروژه خود اجرا کنید تا بسته godotenv را به عنوان وابستگی پروژه نصب کنید.
go get github.com/joho/godotenv
این بسته ها را در فایل Go خود وارد کنید. شما از آنها همراه با بسته godotenv برای بارگیری متغیرهای محیطی و چاپ آنها در کنسول یا خطاهای گزارش استفاده خواهید کرد.
import (
"fmt"
"github.com/joho/godotenv"
"log"
"os"
)
می توانید یک فایل .env را با روش Load بسته godotenv بارگذاری کنید. متد Load نام فایل را می گیرد و خطاهای احتمالی را برمی گرداند.
err := godotenv.Load(".env")
if err != nil {
log.Fatalf("Error loading environment variables file")
}
پس از بارگذاری فایل dotenv می توانید از متد Getenv بسته os برای بارگذاری متغیرهای محیطی استفاده کنید.
name := os.Getenv("NAME")
other := os.Getenv("OTHER")
fmt.Println(name)
fmt.Println(other)
با متد Write بسته godotenv می توانید در فایل های dotenv بنویسید. متد Write نقشهای از رشتهها را به رشتهها میبرد و خطاهای احتمالی را برمیگرداند.
func writeToDotEnv(){
env, _ := godotenv.Unmarshal("KEY=value")
err := godotenv.Write(env, ".env")
if err != nil {
log.Println("There was an error writing to the dotenv file")
}
}
بسته godotenv رشته جفت کلید-مقدار را با روش Unmarshal باز می کند و متغیر env تبدیل به نقشه ای از رشته به رشته می شود.
تابع writeToDotEnv محتویات نقشه را در فایل .env در دایرکتوری کاری می نویسد. این عملیات داده های موجود را بازنویسی می کند.
متغیرهای محیطی همیشه مفید هستند
متغیرهای محیطی تنظیم و تغییر پارامترهای اجرای برنامه را بدون تغییر کد یا پیکربندی آسان می کنند و در نتیجه قابلیت حمل برنامه شما را افزایش می دهند.
میتوانید چندین متغیر محیطی و فایلهای dotenv برای سناریوهای مختلف داشته باشید تا نحوه اجرای برنامهتان را تحت پارامترها یا شرایط مختلف آزمایش کنید.