环境变量与配置管理

环境变量与配置管理 同一份代码需要在开发、测试、生产等不同环境运行。配置管理让我们能够灵活切换环境,而不需要修改代码。 1. 环境变量基础 1.1 读取环境变量 import ( "fmt" "os" ) func main() { // 读取环境变量 dbHost := os.Getenv("DB_HOST") if dbHost == "" { dbHost = "localhost" // 默认值 } fmt.Println("DB Host:", dbHost) // 检查环境变量是否存在 port, exists := os.LookupEnv("PORT") if !exists { port = "8080" } } 1.2 设置环境变量 // 在程序中设置(仅影响当前进程) os.Setenv("API_KEY", "secret123") // 在 shell 中设置 // export DB_HOST=localhost // export DB_PORT=3306 2. godotenv:.env 文件 2.1 安装 go get -u github.com/joho/godotenv 2.2 使用 创建 .env 文件: DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=secret API_KEY=your-api-key DEBUG=true 加载配置: import ( "github.com/joho/godotenv" "log" "os" ) func main() { // 加载 .env 文件 err := godotenv.Load() if err != nil { log.Println("No .env file found") } dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") fmt.Printf("Connecting to %s:%s\n", dbHost, dbPort) } 2.3 多环境配置 func main() { env := os.Getenv("GO_ENV") if env == "" { env = "development" } // 根据环境加载不同的配置文件 godotenv.Load(".env." + env) // .env.development // .env.production // .env.test } 3. Viper:强大的配置库 3.1 安装 go get -u github.com/spf13/viper 3.2 基础使用 创建 config.yaml: ...

2025-09-11 · 3 min · 468 words · Hank