Go 中环境变量的实用指南
环境变量是设置软件应用程序配置值的最佳方式,因为它们可以在系统级别定义,独立于软件本身。这是十二要素应用方法论的原则之一,它使应用程序的构建具有可移植性。
使用环境变量
与环境变量交互所需的只是标准os
包。以下是
如何访问系统PATH
环境变量的示例。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
) | |
func main() { | |
// Store the PATH environment variable in a variable | |
path, exists := os.LookupEnv("PATH") | |
if exists { | |
// Print the value of the environment variable | |
fmt.Print(path) | |
} | |
} |
设置环境变量同样简单:
从 .env 文件加载环境变量
在运行多个项目的开发机器上设置环境变量并不总是可行的。
godotenv是 Ruby
dotenv库的 Go 移植版本。它允许你在文件中定义
应用程序的环境变量.env
。
要安装该包,请运行:
$ go get github.com/joho/godotenv
将您的配置值添加到.env
项目根目录下的文件中:
GITHUB_USERNAME=craicoverflow
GITHUB_API_KEY=TCtQrZizM1xeo1v92lsVfLOHDsF7TfT5lMvwSno
然后您可以在应用程序中使用这些值:
值得注意的是,如果
系统中已经定义了环境变量,那么 Go 将优先使用该环境变量而不是中的值.env
。
将环境变量包装在配置包中
像这样直接访问环境变量固然很好,但维护起来却不太方便,不是吗?每个值都是一个字符串——想象一下,当修改环境键时,必须更新每个引用!
为了解决这个问题,让我们创建一个配置包,以更加集中和易于维护的方式访问环境变量
。
这是一个简单的config
包,它将以Config
结构体形式返回配置值。我们可以选择定义一个默认值,因此当
环境变量不存在时,将使用默认值。
接下来,我们应该向结构体添加不同的类型Config
。当前的实现只能处理string
多种类型,这对于较大的应用程序来说不太实用。
让我们添加函数来处理bool
和类型slice
。integer
使用这些环境变量更新您的.env
文件。
GITHUB_USERNAME=craicoverflow
GITHUB_API_KEY=TCtQrZizM1xeo1v92lsVfLOHDsF7TfT5lMvwSno
MAX_USERS=10
USER_ROLES=admin,super_admin,guest
DEBUG_MODE=false
现在您可以从应用程序的其余部分访问这些值:
就是这样
市面上有很多库声称能为你的 Go 应用程序提供配置“解决方案”。但是,既然 自己动手做配置
也同样简单,这真的是一个解决方案吗?
如何管理 Go 应用程序中的配置?
你喜欢这篇文章吗?欢迎访问https://endaphelan.me查看更多类似的文章。
文章来源:https://dev.to/craicoverflow/a-no-nonsense-guide-to-environment-variables-in-go-a2f