我有案例工作功能
os.GetEnv()
我在我的系统中设置了一个变量ADDR =" 192.168.1.100"文件 .bashrc 和 .profile 。因此,如果我打开终端并输入以下命令,我会得到很好的结果
$ echo $ ADDR
192.168.1.100
为什么在下面非常简单的程序中,如果在系统中设置了正确的变量,我会得到错误?
func main(){
addr := os.Getenv("ADDR")
if addr == "" {
return errors.New("missing addres")
}
}
我也多次重启IDE。尝试再次写入终端
$ env ADDR =" 192.168.1.100"
但仍然有同样的效果。
答案 0 :(得分:6)
我认为问题可能是你没有导出变量,所以子进程(即你的ide,shell,没有得到它)。
ADDR="192.168.1.100" go run main.go
或
export ADD="192.168.1.100"
go run main.go
答案 1 :(得分:0)
如果您进入的程序是Mac中另一个类似于程序的应用程序,请使用以下命令进行设置:
sudo launchctl setenv <env var> <env var value>
答案 2 :(得分:0)
您可以将env变量保存在.env文件中,并在运行时将其导出,如下所示:
导出less .env | xargs
;去运行cmd / main.go
答案 3 :(得分:0)
我有同样的问题,对我来说是因为我使用sudo运行程序。
我以普通用户身份检查了环境变量。但是以root用户身份运行该程序。所以他们的环境可能不一样。
答案 4 :(得分:-2)
我只是遇到了这个问题,所以我没有以root身份运行程序来解决了这个问题。我不确定原因,但是现在可以了!