os.GetEnv()在设置env变量后不起作用

Mbd*_*ded 3 environment-variables go

我有这种情况不工作的功能

os.GetEnv()

我在我的系统ADDR ="192.168.1.100"trought文件.bashrc.profile中设置了一个变量.所以,如果我打开终端并输入以下命令,我会得到很好的结果

$ echo $ ADDR

192.168.1.100

为什么在下面非常简单的程序我得到错误如果变量在系统中设置正确?

func main(){
    addr := os.Getenv("ADDR")
    if addr == "" {
        return errors.New("missing addres")
    }
}
Run Code Online (Sandbox Code Playgroud)

我也多次重启IDE.试着再次写入终端

$ env ADDR ="192.168.1.100"

但仍然有同样的效果.

小智 7

在尝试获取 env 之前,我们必须先加载它。所以,我使用了一个名为godotenv加载环境的包。安装 godotenv

$ go get github.com/joho/godotenv
Run Code Online (Sandbox Code Playgroud)

然后,

// load
err := godotenv.Load()
    if err != nil {
        log.Fatalf("err loading: %v", err)
    }

// get
addr := os.Getenv("ADDR")
if addr == "" {
    return errors.New("missing addres")
}
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ndt 6

我认为问题可能是你没有导出变量,所以子进程(即你的ide,shell,没有得到它)​​.

ADDR="192.168.1.100" go run main.go
Run Code Online (Sandbox Code Playgroud)

要么

export ADD="192.168.1.100"
go run main.go
Run Code Online (Sandbox Code Playgroud)