为了账号安全,请及时绑定邮箱和手机立即绑定

为什么从代码中调用 Setenv 不起作用?

为什么从代码中调用 Setenv 不起作用?

Go
尚方宝剑之说 2023-07-10 09:23:33
我有一个简单的测试项目,预计在运行时打印 goroutine 调度消息。从 Goland 配置中设置 env 是有效的。但它不是来自下面的代码,该应用程序不会打印日程安排信息。有人解释一下发生了什么吗?func TestScheduler1() {    var wg sync.WaitGroup    wg.Add(10)    for i := 0; i < 10; i++ {        go work(&wg)    }    wg.Wait()    // Wait to see the global run queue deplete.    time.Sleep(3 * time.Second)}func work(wg *sync.WaitGroup) {    time.Sleep(time.Second)    var counter int    for i := 0; i < 1e10; i++ {        counter++    }    wg.Done()}初始化函数如下: func init()  {    os.Setenv("GOMAXPROCS", "1")    os.Setenv("GODEBUG", os.Getenv("GODEBUG") + "schedtrace=1000,scheddetail=1")}
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

go命令文档提到go检查一些环境变量:

go 命令及其调用的工具检查一些不同的环境变量。

因此,环境变量在程序启动之前(即构建时)进行检查。当您从代码中设置这些变量时,程序已经运行。

它可以在 IDE 中运行,因为变量是在编译之前应用的,因此代码运行时会包含您需要的所有更改。


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信