如何在函数之间传递带有chan的var

时间:2018-10-09 10:29:57

标签: go channel goroutine

我正在实现一种通过通道在两个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有可能吗?

1 个答案:

答案 0 :(得分:1)

您应该使用第二个频道来进行操作。您可以摆脱使用单个通道并打开结果的想法,但这并不是很理想-您基本上是在尝试将两种不同类型的对象放入同一通道,这样您的程序最终会变得更简洁,更轻松来说明每种数据类型/预期转换是否只有一个通道。