【问题标题】:How to pass vars with chan between functions如何在函数之间传递带有chan的变量
【发布时间】:2018-10-09 18:55:17
【问题描述】:

我正在实现一个简单的机制,在两个带有通道的 goroutine 之间传递变量。这是我的代码:

pipe := make(chan string)
go func(out chan string, data string) { //1st goroutine
        out <- DataSignerMd5(data)
    }(pipe, data)
go func(in chan string) {               //2nd goroutine
        data := <-in
        in <- DataSignerCrc32(data)
    }(pipe)
crcMdData := <- pipe

更有可能的是,crcMdData 在第二个 goroutine 之前从 pipe 中提取一个变量。我想我可以简单地创建另一个频道来完成这项工作。但也许用一个pipe 就可以了?

【问题讨论】:

    标签: go channel goroutine


    【解决方案1】:

    您应该使用第二个渠道来完成您想做的事情。您可以使用单个通道并打开结果而侥幸,但这并不理想 - 您基本上是在尝试将两种不同类型的对象放入同一个通道中,您的程序最终会变得更加简洁和容易推理每种数据类型/预期转换是否只有一个通道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 2013-04-09
      相关资源
      最近更新 更多