返回顶部
首页 > 资讯 > 后端开发 > GO >不太掌握 goroutine 和通道,请分解这段代码
  • 126
分享到

不太掌握 goroutine 和通道,请分解这段代码

2024-04-05 00:04:06 126人浏览 八月长安
摘要

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《不太掌握 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
}

我明白发生了什么,但我想我没有掌握事件的顺序或限制?

  1. 创建一个名为 done 的通道,缓冲区大小为 1。
  2. 通道被传递到函数中
  3. 计时器完成后,它会向通道添加 true 布尔值
  4. 我不确定最终的 <-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

猜你喜欢
  • 不太掌握 goroutine 和通道,请分解这段代码
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《不太掌握 goroutine 和通道,请分解这段代码》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作