跨文件使用环境变量-GOPATH

跨文件使用环境变量-GOPATH,go,environment-variables,Go,Environment Variables,这是我第一次在没有使用GOPATH的情况下使用Go编码 我有一个go.mod文件 我正试图通过Sendgrid发送电子邮件;我有一个包含SENDGRID\u API\u密钥的文件,名为SENDGRID.env 尝试使用mymain.go文件中的键时,该值未被提取 fmt.Println(os.LookupEnv("SENDGRID_API_KEY")) // empty string fmt.Println(os.Getenv("SENDGRID_API_KEY")) // empty str

这是我第一次在没有使用GOPATH的情况下使用Go编码
我有一个
go.mod
文件
我正试图通过Sendgrid发送电子邮件;我有一个包含SENDGRID\u API\u密钥的文件,名为
SENDGRID.env

尝试使用my
main.go
文件中的键时,该值未被提取

fmt.Println(os.LookupEnv("SENDGRID_API_KEY")) // empty string 
fmt.Println(os.Getenv("SENDGRID_API_KEY")) // empty string
我还使用了“LookupEnv”,它返回false。
任何帮助都将不胜感激

并且不检查文件。如果您的环境变量在文件中,您必须自己加载它们。或者使用第三方lib为您实现这一点,例如,看起来如下所示:

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
或者,如果文件中有env vars,则可以使用
source
命令:

source sendgrid.env
./mygoapp

os
包应该如何知道如何在您的
sendgrid.env
文件中查找环境变量?@icza我需要在该env文件中设置一些东西,比如包吗?API密钥已导出。您需要添加env文件的结构(而不是内容),以便我们可以告诉您如何读取它。例如,Export SENDGRID\u API\u KEY=MYAPIKEYGo看起来像一个例子,它不会神奇地使用或理解“env文件”。如果您想要读取该文件,则需要编写代码(或使用库)来执行此操作。