通过渠道

时间:2017-12-13 19:07:24

标签: go generator goroutine

我有两个用作生成器的只读通道<-chan Event

type Event struct{
    time int
}

我可以将它们的值读作:

for {
    select {
    case <-chan1:
        // do something
    case <-chan2:
        //do something
    }

我将这些频道用于事件驱动的模拟,因此我必须选择Event较少的time字段。

是否可以检查每个通道的值,然后选择从哪个读取?因为操作<-chan1从通道获取值,所以无法将其推回(只读通道)。

1 个答案:

答案 0 :(得分:3)

您可以实现您的go渠道结构版本。例如,以下实现就像没有大小限制的go channel那样,你可以检查它的第一个元素。

$query = "select farm from farms where id =".$supplier;