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