登录
首页 >  Golang >  Go问答

Go 频道教程中某些缺失单词的澄清

来源:stackoverflow

时间:2024-04-16 10:03:36 297浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Go 频道教程中某些缺失单词的澄清》,聊聊,我们一起来看看吧!

问题内容

有关频道的 Go 教程页面似乎缺少一个单词或只是未经编辑。我不知道它应该说关于通过渠道发送和接收的内容。

默认情况下,发送和接收会阻塞,直到另一方准备好为止。

block 是 Go 中的东西吗?我以前没见过。 block 是否用作名词?

我尝试寻找澄清。唯一具有类似措辞的其他页面是 eduative.io

此外,默认情况下,通道会发送和接收,直到另一方准备好为止

但这没有意义。他们的意思是:

  • 无论对方是否准备好,通道都会发送和接收?这不觉得很浪费吗?
  • 或者上面的陈述中是否缺少“”?

正确答案


“阻塞”意味着 goroutine 将等待。你可以这样写:

默认情况下,发送和接收会等待对方准备好。

“阻止”只是对此的正常术语。它不是 go 特有的。在 go 中可以以非阻塞的方式使用通道:

  1. 您可以创建带有缓冲区的通道。 只要缓冲区中有空间,写入就是非阻塞的(但如果缓冲区已满,则会阻塞)。 只要缓冲区中有数据,读取就是非阻塞的(但如果缓冲区为空则会阻塞)。

  2. 您可以将 select 语句与 default 分支结合使用。

var readch chan int
var writech chan int
var value int
select {
case n := <- readch:
    // Received data.
case writech <- value:
    // Sent data.
default:
    // Didn't send or receive data.
}

在此代码中,goroutine 将转到 default 分支,而不是阻塞(等待)。

今天关于《Go 频道教程中某些缺失单词的澄清》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>