简介

twelve-factor应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置, 然后存储到程序的环境变量中。在代码中可以使用读取非常方便。godotenv源于一个 Ruby 的开源项目dotenv。

快速使用

第三方库需要先安装:

$ go get github.com/joho/godotenv

后使用:

package mainimport ("fmt""log""os""github.com/joho/godotenv"
)func main() {err := godotenv.Load()if err != nil {log.Fatal(err)}fmt.Println("name: ", os.Getenv("name"))fmt.Println("age: ", os.Getenv("age"))
}

然后在可执行程序相同目录下,添加一个.env文件:

name = dj
age = 18

运行程序,输出:

name:  dj
age:  18

可见,使用非常方便。默认情况下,godotenv读取项目根目录下的.env文件,文件中使用key = value的格式,每行一个键值对。调用godotenv.Load()即可加载,可直接调用os.Getenv(“key”)读取。os.Getenv是用来读取环境变量的:

package mainimport ("fmt""os"
)func main() {fmt.Println(os.Getenv("GOPATH"))
}

高级特性

自动加载

如果你有程序员的优良传统——懒,你可能连Load方法都不想自己调用。没关系,godotenv给你懒的权力!

导入github.com/joho/godotenv/autoload,配置会自动读取:

package mainimport ("fmt""os"_ "github.com/joho/godotenv/autoload"
)func main() {fmt.Println("name: ", os.Getenv("name"))fmt.Println("age: ", os.Getenv("age"))
}

注意,由于代码中没有显式用到godotenv库,需要使用空导入,即导入时包名前添加一个_。

看autoload包的源码,其实就是库帮你调用了Load方法:

// src/github.com/joho/godotenv/autoload/autoload.go
package autoload/*You can just read the .env file on import just by doingimport _ "github.com/joho/godotenv/autoload"And bob's your mother's brother
*/import "github.com/joho/godotenv"func init() {godotenv.Load()
}

仔细看注释,程序员的恶趣味

如何读取环境变量值?Go 每日一库之 godotenv相关推荐

  1. php修改父进程变量,shell子进程修改父进程的环境变量值

    shell子进程修改父进程的环境变量值 脚本中的环境变量通过 export 导出,脚本中调用其他脚本使用这个变量 这里有两个脚本程序 hello 和 hello1 hello 脚本代码 #!/bin/ ...

  2. godot mysql_Go 每日一库之 godotenv

    简介 twelve-factor应用提倡将配置存储在环境变量中.任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里.但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突 ...

  3. python环境变量值_如何在python中读取Windows环境变量值?

    尝试使用以下内容: os.getenv('MyVar') os.getenv(varname[, value]) Return the value of the environment variabl ...

  4. 如何访问环境变量值?

    我设置了要在我的Python应用程序中访问的环境变量. 我如何获得这个价值? #1楼 检查密钥是否存在(返回True或False ) 'HOME' in os.environ 您也可以在打印密钥时使用 ...

  5. Python获取环境变量值

    import osenv_dist = os.environ # environ是在os.py中定义的一个dict environ = {}print (env_dist.get('JAVA_HOME ...

  6. 设置、查看环境变量值

    2019独角兽企业重金招聘Python工程师标准>>> 1.启动CMD命令窗口 2.set JAVA_HOME=x:\JDK_1.4.2       set PATH=%JAVA_H ...

  7. jre配置环境变量及无法保存设置的Path变量值

    jre环境变量配置 例:jre安装目录为: C:\Program Files\Java\jre1.8.0_231 配置步骤 打开我的电脑,右击选择属性 或 打开控制面板-> 系统 ----> ...

  8. 环境变量 变量名 变量值_如何使用环境变量

    环境变量 变量名 变量值 Environment variables are a set of dynamic named values that can affect the way running ...

  9. 【C++】39. std::ofstream把程序中的中的变量值存储到文件中

    更详细的介绍请参考C++ ofstream和ifstream详细用法 在c++代码中,我们通常可以使用类似std::cout的方法打印变量值.如果想把这些变量值存储到文件中保存起来,可以使用std:: ...

最新文章

  1. 一天掌握AI核心技术,上手应用,开发者该划哪些重点?
  2. 孩子从小要学编程吗?
  3. 我犯了一个错误,您能指出吗?
  4. es查询大文本效率_es之路由:进一步提高Elasticsearch的检索效率(适用大规模数据集)...
  5. java集合转js数值_前端js调用接口转换Map数组数据
  6. php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...
  7. 在线数理思维教育品牌“火花思维”完成4000万美元C轮融资
  8. Dubbo分析之Registry层
  9. 除了iframe嵌套还有什么嵌套_嵌套了ROUND函数,为什么还会差1分钱,值得收藏
  10. 中国蟹养殖和捕捞现状分析,淡水养殖产量占比最高「图」
  11. 申请CSDN博客专家认证成功
  12. 用C语言解决文件合并问题
  13. 怎么提取图片上的文字?这三个小妙招,让你事半功倍!
  14. Android 针对华为手机调用裁剪出现圆形裁剪框的处理
  15. [C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
  16. 你只是想学好linux而已
  17. PyQy5学习(二):QMainWindow+QWidget+QLabel
  18. JavaScript 根据经纬度得出中心点的经纬度
  19. 基于jsp+ssm的网上图书商城
  20. 一道OJ题目:浮点数排序

热门文章

  1. 32、Java——迷你图书管理器(对象+JDBC)
  2. TypeError: 'str' object cannot be interpreted as an integer
  3. react.js实现的时间轴js特效
  4. adjacency list(邻接表)神物
  5. 南京大学的计算机到底怎么样?
  6. 哈希表--管理公司员工信息
  7. 移动200/300M网速只有最高5M/s(3G太快了),提高网速的办法和具体处理方式
  8. 电子会员卡管理系统卡具配置
  9. SuperMap GIS BIM类型数据处理 QA
  10. php生成二维码海报