如何在函数之间传递带有chan的变量
How to pass vars with chan between functions
我正在实现一个简单的机制,通过通道在两个 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
?
是可能的
你应该使用第二个频道来完成你想做的事情。您可以使用单个通道并打开结果,但这并不是很理想 - 您基本上是在尝试将两种不同类型的对象放入同一通道,并且您的程序最终会变得更加清晰和容易推断每种数据类型/预期转换是否只有一个通道。
我正在实现一个简单的机制,通过通道在两个 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
?
你应该使用第二个频道来完成你想做的事情。您可以使用单个通道并打开结果,但这并不是很理想 - 您基本上是在尝试将两种不同类型的对象放入同一通道,并且您的程序最终会变得更加清晰和容易推断每种数据类型/预期转换是否只有一个通道。