【发布时间】:2014-08-28 02:30:55
【问题描述】:
我有一个函数,给定一个切片和一个数组,将切片的元素一个一个发送到通道
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)
}
}
有时通道会关闭,但其中一个功能仍需要向其发送数据。我该如何处理?分开通道似乎是这里最合理的选择,但我希望两个数据都通过同一个通道。
【问题讨论】:
标签: concurrency go channel goroutine