环境变量是编程之旅中非常重要的组成部分,那什么是环境变量呢?

先来看官方的定义:

环境变量(environment variable)是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。

我来说个人话:

变量你肯定知道是什么吧,在代码中声明一个变量,然后我们可以设置/读取其中的内容;

那环境变量就是在系统层面的变量,一旦我们设置了一个环境变量,我们就可以在不同的代码中设置/读取其中的内容

比如我们有一个mysql,就可以将其某个数据库的地址(host)、端口(port)、用户名(username)、密码(password)、数据库名(dbname)配置到环境变量里。这样我们无需单独配置,就可以通过Golang或Python等编程语言从环境变量处获取到数据库配置了

今天讲一下如何在Golang中,设置(set)、读取(get)和拿到所有的环境变量(list),这一切都能在os标准包里找到对应的函数


有两个办法直接获取到指定名称的环境变量

1) os.Getenv的定义:

根据变量名获取环境变量,如果获取不存在的环境变量,得到的是一个空字符串:

结果:

2) os.LookupEnv的定义:

由上一个例子得知,当获取一个不存在的环境变量时会返回空字符串,那如果这个环境变量存在但它的值就是空字符串呢? 怎样才能判断一个环境变量是否存在呢?

os.LookupEnv函数就能解决这个问题,它是为了补充os.Getenv而存在的

来看个例子:

运行前通过export命令设置环境变量AA的值为空字符串:

通过LookupEnv函数的第二个返回值,我们得知AA变量是存在的,而BB变量不存在,它们两者结果皆为空字符串

LookupEnv函数非常适合从环境变量获取默认值的情况:

设置环境变量

设置环境变量只有一个函数

os.Setenv的定义:

看个例子:

但要注意的是,设置的环境变量只在程序运行期间有效,程序结束后,环境变量就失效了:

获取所有的环境变量

os.Environ的定义

使用Environ函数列出所有环境变量的键值对(key/value pairs),得到的是字符串切片,元素是以key=value的格式

试一下:

配合strings.SplitN函数可以分离出键与值:



that's all, hope it's helpful to you, thanks~