在没有隐式缓冲区的情况下,如何将值从一个Go通道传输到另一个Go通道?

在没有隐式缓冲区的情况下,如何将值从一个Go通道传输到另一个Go通道?,go,pipeline,channel,Go,Pipeline,Channel,假设我有一个goroutine,它从一个通道读取数据,然后写入另一个通道 ch1 := make(chan int) ch2 := make(chan int) go func() { for num := range ch1 { ch2 <- num+1 } }() ch1:=make(chan int) ch2:=制造(成交量) go func(){ 对于num:=范围ch1{ ch2您不能使用2个通道执行此操作。要在ch2上执行发送,必须已准备好要发送的值,并对其进

假设我有一个goroutine,它从一个通道读取数据,然后写入另一个通道

ch1 := make(chan int)
ch2 := make(chan int)
go func() {
  for num := range ch1 {
    ch2 <- num+1
  }
}()
ch1:=make(chan int)
ch2:=制造(成交量)
go func(){
对于num:=范围ch1{

ch2您不能使用2个通道执行此操作。要在ch2
上执行发送,必须已准备好要发送的值,并对其进行评估

在通信开始之前,对通道和值表达式进行求值

因此,即使您这样做,似乎也不会缓冲任何变量中的值:

ch2 <- (<- ch1)

ch2作为一个注释:Rob Pike向Go 2中的频道添加了一个
拼接
,这似乎就是为了解决这个问题。最初的拼接方案并没有真正涵盖我想要的内容,但这正是我上面所描述的。除了我不确定他所说的如何重构代码的意思之外。