偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《不太掌握 Goroutine 和通道,请分解这段代码》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《不太掌握 Goroutine 和通道,请分解这段代码》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容我正在快速介绍 go,其中一个示例是:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Print("working...")
time.Sleep(time.Second)
fmt.Println("done")
done <- true
}
func main() {
done := make(chan bool, 1)
go worker(done)
<-done
}
我明白发生了什么,但我想我没有掌握事件的顺序或限制?
done
的通道,缓冲区大小为 1。true
布尔值<-done
正在做什么来自:https://gobyexample.com/channel-synchronization
接收器运算符 <-
后跟通道名称(在本例中为 done
)用于等待从工作 goroutine 写入通道的值。 (即这个读操作将是阻塞的。如果你省略 <-done
,即使在worker的goroutine启动之前,main goroutine也会立即退出,并且你将看不到结果)
您可以使用 <-done
作为值做任何您想做的事情:将其分配给另一个变量,将其作为参数传递给另一个函数,或者像您的情况一样忽略它......等等。
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持编程网!更多关于golang的相关知识,也可关注编程网公众号。
--结束END--
本文标题: 不太掌握 goroutine 和通道,请分解这段代码
本文链接: https://lsjlt.com/news/596622.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0