为什么在调用函数时使用‘ go’关键字?

我正在看一个 TCP 服务器的例子,他们定义了一个函数并调用它:

go handleRequest(conn)

我觉得看到 go关键字很奇怪,所以我试着不用:

handleRequest(conn)

令我惊讶的是,这个起作用了!

  • 如果两者工作方式相同,为什么还要使用 go关键字呢?
  • 如果它们的工作方式不同,那又有什么区别呢?
  • 是否有特定的风格指南可供使用,还是应该只使用个人偏好?
30130 次浏览

go启动由 golang运行时管理的 高级舞蹈

它可以在当前操作系统线程上运行,也可以在不同的操作系统线程上自动运行。

您可以参考基本的 golang文档,例如,在谷歌搜索关键字 goroutine中的一个项目是 Golang 并发(Golang 并发)

当你在一个函数之前使用 Go 关键字使得那个函数运行到一个 goRoutine 中,就像一个 Java 线程,并且是并发的前进方向,更多信息 给你。祝你好运

并发性在 go 规范中没有很好的记录,它是该语言最强大的特性之一,go关键字是在构建并发软件而不是过程软件时的起点。

您还需要查看通道,以便更好地理解这个概念。

在删除 go关键字时,函数调用是过程性的。

请查看 Rob Pike (Go 的创建者)关于 golang 中并发性的演讲。 Https://www.youtube.com/watch?v=f6kdp27tyzs&t=1198s&ab_channel=googledevelopers