go - 为什么不能在go中运行go函数?

标签 go

<分区>

这是下面的代码:

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

最佳答案

简短:在最后等待,它会打印。
更好的选择:通过 channel 沟通终止。

长:只要主 goroutine 存在,go 程序就会存在。

当您执行 go somefunc() 时,它不会立即启动,somefunc() 会被安排

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

关于go - 为什么不能在go中运行go函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35063476/

相关文章:

opengl - Golang fmt.Println() 导致游戏崩溃

google-app-engine - 有没有办法以交互方式为 Go GAE 应用程序创建新的数据存储实体类型?

go 1.5 在 OS X 上使用 cgo 交叉编译到 linux 和 windows

go - 如何从字符串创建 *os.File 实例?

go - 解析文本文件以匹配字符串并提取值(在 Golang 中)

go - 时区无法在 Go 1.13 中加载

web-applications - 使用 Gorilla 工具包通过根 URL 提供静态内容

go - 如果满足条件则返回真

go - 如何在 gRPC 中使用预定义的 protobuf 类型(即 "google/protobuf/timestamp.proto")

sockets - 在 golang 中创建 TCP 客户端