go - 跨文件使用环境变量 - GOPATH

标签 go environment-variables

这是我第一次在不使用 GOPATH 的情况下使用 Go 进行编码。
我有一个 go.mod文件。
我正在尝试通过 Sendgrid 发送电子邮件;我有一个包含我的 SENDGRID_API_KEY 的文件,名为 sendgrid.env .
尝试使用我的 main.go 中的 key 时文件,该值没有被拉出。

fmt.Println(os.LookupEnv("SENDGRID_API_KEY")) // empty string 
fmt.Println(os.Getenv("SENDGRID_API_KEY")) // empty string

我还使用了返回 false 的“LookupEnv”。

任何帮助,将不胜感激。

最佳答案

os.Getenv() os.LookupEnv() 不检查文件。如果您的环境变量在文件中,您必须自己加载它们。或使用为您执行此操作的 3rd 方库,例如 github.com/joho/godotenv ,看起来像这样:

if err := godotenv.Load("sendgrid.env"); err != nil {
    log.Fatal("Error loading sendgrid.env file")
}

另一种选择是在启动您的应用程序之前导出环境变量,例如:
export SENDGRID_API_KEY=mykey
./mygoapp

或者在一行中:
SENDGRID_API_KEY=mykey ./mygoapp

或者,如果您在文件中有环境变量,您可以使用 source命令:
source sendgrid.env
./mygoapp

关于go - 跨文件使用环境变量 - GOPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59411316/

相关文章:

go - gvm 过时了吗?

ruby - 如何在 Ruby 脚本中为命令 shell 获取环境变量?

c++ - 环境变量拆分为名称和值 c

基于环境变量的编译

go - 模仿Python在Go列表中理解一系列数字

google-app-engine - Goapp 服务 - 警告 : There are too many files

unit-testing - 如何在构建期间运行 mockgen?

pointers - 如何在 Go 中初始化一个指向结构的指针类型?

xcode - 如何在 Xcode Scheme Arguments Passed On Launch 窗口中使用环境变量?

jenkins - 无法在 jenkinsfile 中设置环境变量