环境变量与配置管理

大家好,我是极客老墨。 同一份代码需要在开发、测试、生产等不同环境运行。配置管理让我们能够灵活切换环境,而不需要修改代码。这篇就聊聊 Go 的配置管理,从最简单的环境变量到强大的 Viper 库。 1. 环境变量基础 1.1 读取环境变量 1import ( 2 "fmt" 3 "os" 4) 5 6func main() { 7 // 读取环境变量 8 dbHost := os.Getenv("DB_HOST") 9 if dbHost == "" { 10 dbHost = "localhost" // 默认值 11 } 12 13 fmt.Println("DB Host:", dbHost) 14 15 // 检查环境变量是否存在 16 port, exists := os.LookupEnv("PORT") 17 if !exists { 18 port = "8080" 19 } 20} 1.2 设置环境变量 1// 在程序中设置(仅影响当前进程) 2os.Setenv("API_KEY", "secret123") 3 4// 在 shell 中设置 5// export DB_HOST=localhost 6// export DB_PORT=3306 2. godotenv:.env 文件 2.1 安装 1go get -u github.com/joho/godotenv 2.2 使用 创建 .env 文件: ...

2025-09-11 · 4 min · 670 words · 老墨

[GoLang避坑实战-01] Go 1.24 安装排雷指南:拒绝被"环境变量"折磨

大家好,我是极客老墨! 在正式开始这套 Golang 基础教程之前,老墨要先跟你聊聊一个很多人容易忽略的问题:环境配置。 你可能会想:“不就是装个 Go 嘛,有啥好说的?” 但老墨见过太多同学,拿着 Go 1.11 的版本跑 Go 1.18 的泛型代码,然后在群里问:“为什么我的代码报错?” 所以,磨刀不误砍柴工,咱们先把环境搞对,后面学起来才能一路畅通。 关于本教程 这套 Golang 教程分为三个部分: 基础教程(本系列):从零开始学习 Go 语言的核心语法和基础特性 高级教程(规划中):工程实践、性能优化、并发模式等进阶内容 Web 开发(规划中):Gin、GORM 等 Web 框架的实战应用 目前你正在阅读的是基础教程部分,适合 Go 语言初学者或想系统学习 Go 基础的开发者。高级教程和 Web 开发部分老墨会在后续完善后陆续发布,敬请期待! 1. Go 版本选择 1.1 本教程使用的版本 本教程所有代码基于 Go 1.24+ 编写和测试。 由于老墨编写这一套教程时间跨度较大,可能教程中的 Go 版本较旧,但是老墨建议大家都使用最新的 LTS 版本即可,GoLang 官方保证了兼容性,所以理论上最新版本的 Go 都可以跑本教程的代码。 1.2 如何查看你的 Go 版本 1go version 如果输出类似这样,就说明安装成功了: go version go1.24.0 darwin/arm64 1.3 版本兼容性说明 Go 版本 本教程兼容性 说明 1.24+ 完全兼容 推荐使用,支持所有最新特性 1.21-1.23 完全兼容 支持泛型、slog 等特性,可以正常使用 1.18-1.20 部分兼容 泛型相关代码可以跑,但 slog 等新特性不可用 1.16-1.17 不兼容 不支持泛型,部分代码无法运行 < 1.16 不兼容 太老了,建议升级 2. 安装 Go 2.1 macOS 安装 方法一:使用 Homebrew(推荐) ...

2022-07-10 · 3 min · 449 words · 老墨