点击上方蓝色“ Go语言中文网 ”关注, 每天一起学 Go
了解环境变量以及在 Golang 应用程序中使用它们的不同方法。
开始之前
本教程假定你具有:
- 对 Go 语言的基本了解
- 系统上安装了最新 Golang 版本
- 几分钟的时间
在本文中,我们将了解环境变量以及为什么要使用它们。并且将使用内置和第三方包在 Go 应用程序中访问它们。
什么是环境变量?
环境变量是系统级的键-值对,正在运行的进程可以访问它。这些通常用于使同一程序在不同的部署环境(例如 PROD, DEV 或 TEST)中表现不同。在环境中存储配置是 twelve-factor 应用程序的原理之一。它使应用程序具有可移植性。
为什么要使用环境变量
- 如果您在代码中使用敏感信息,那么所有有权访问该代码的未授权用户都将拥有敏感数据,您可能不希望如此。
- 如果您使用的代码版本控制工具如:
git
,那么可能将 DB 凭据与代码一起推送,它将公开。 - 如果要在一处管理变量,则可以进行任何更改,而不必在应用程序代码中的所有位置都进行更改。
- 您可以管理多个部署环境,例如 PROD,DEV 或 TEST。在部署之间可以轻松更改环境变量,而无需更改任何应用程序代码。
永远不要忘记在 .gitignore 中包含环境变量文件
内置操作系统包
您不需要任何外部程序包即可访问 Golang 中的环境变量,并且可以使用标准库 os
包来实现。以下是与环境变量有关的函数及其用途的列表。
os.Setenv()
设置环境值的值。os.Getenv()
获取指定键对应的环境变量值。os.Unsetenv()
删除指定键命名对应的单个环境值,如果我们再尝试使用os.Getenv()
来获取该环境值,将返回一个空值。os.ExpandEnv
根据环境变量的值替换字符串中的${var}
或$var
。如果不存在任何环境变量,则将使用空字符串替换它。os.LookupEnv()
获取指定键对应的环境变量值。如果系统中不存在该变量,则返回值将为空,并且布尔值将为 false。否则,它将返回值(可以为空),并且布尔值为 true。
如果不存在环境变量,则 os.Getenv() 将返回一个空字符串,使用 LookupEnv 来区分空值和未设置值。