【问题标题】:why can not run go function in go? [duplicate]为什么不能在 go 中运行 go 函数? [复制]
【发布时间】:2016-01-28 21:59:39
【问题描述】:

这是下面的代码:

func main() {
    values := []int{1, 2, 3, 4}
    for _, v := range values {
        go func(x int) {
            fmt.Println(x)
        }(v)
    }
}

如果这段代码没有go关键字,它将打印1, 2, 3, 4

但是现在不能打印任何代码,为什么?

go 版本:1.5.2 darwin/amd64

【问题讨论】:

    标签: go


    【解决方案1】:

    短:在最后放置一个等待,它会打印。
    更好的选择:通过通道通信终止。

    Long:go 程序的生命周期与主 goroutine 的生命周期一样长。

    当您执行go somefunc() 时,它不会立即启动,somefunc() 会调度

    在您的情况下,您安排了一些 goroutines 并退出 - 调度程序没有理由运行其他 goroutines。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 2017-12-06
      • 2023-02-03
      • 1970-01-01
      • 2020-04-07
      • 2021-05-01
      • 2016-12-03
      相关资源
      最近更新 更多