golang在goland编译时获取环境变量失效

在golang中, 我们通常使用os包来获取环境变量,如:

os.Getenv()
os.LookupEnv()

等。

但如果我们使用goland编译器,在编译是,这时操作环境变量,会发现os包读取到的环境变量值不变:

        新增后,读到的值还是空值;

        修改后,读到的还是修改前的值。

排查了好久,才发现一些问题:

        goland在启动时,会加载环境变量,并在运行时缓存这些变量,导致在系统上操作缓存变更后,os包读到值不会变。

且,重启某个项目是无效的,需要关闭所有项目,把goland都关闭后,重新打开,才能生效。

但这个,其实很麻烦,每次一修改,就需要重启所有项目。

我只找到一个不是办法的办法,就是当你需要修改某个项目的环境变更且不想关闭其他项目时,可以在该项目启动的代码,或是新增一个临时项目,执行:

os.Setenv()

syscall.SetEnvironmentVariable()

去更新环境变量,然后再去掉代码(是有点麻烦)。

os.Setenv():只能单次生效

syscall.SetEnvironmentVariable():我还没测试过

我只用过goland编译器,不知道其他编译器会不会出现这种问题,或是哪位大神有其他解决办法,可以发评论告知下!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值