1
我有,给定一个切片和阵列,将由一个两个例程在相同的信道上进行通信
package main
import (
"fmt"
)
var list1 = []string{"1", "2", "4"}
var list2 = []string{"11", "22", "44"}
func throw(ch chan string, list []string) {
for _, el := range list {
fmt.Println("Thrown ", el)
ch <- el
}
close(ch)
return
}
func main() {
c := make(chan string)
go throw(c, list1)
go throw(c, list2)
for i := range c {
fmt.Println("received ", i)
}
}
切片的元素发送到所述信道的一个。在一些函数指出通道关闭,但其中一个功能仍然需要向其发送数据。我该如何处理?制作分离频道似乎是最合理的选择,但我希望两个数据都能通过同一频道。
或者您可以使用像这样的手动计数http://play.golang.org/p/Rwf8PI22U2 – RoninDev 2014-08-28 05:41:19
如果您知道有多少物品可以期望渠道,是的。在这个人为的例子中可能是这样,但肯定不是一般情况。 – 2014-08-28 06:38:55
当然!这完全取决于任务的条件。你的解决方案更一般,所以我投了票 – RoninDev 2014-08-28 06:48:28