我正在实现一种通过通道在两个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
有可能吗?
答案 0 :(得分:1)
您应该使用第二个频道来进行操作。您可以摆脱使用单个通道并打开结果的想法,但这并不是很理想-您基本上是在尝试将两种不同类型的对象放入同一通道,这样您的程序最终会变得更简洁,更轻松来说明每种数据类型/预期转换是否只有一个通道。