У меня есть функция, которая, учитывая кусочек и массив, будет посылать элементы среза в канал один за однимдве подпрограммы проходные на том же канале
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
Это будет работать, если вы знали, сколько предметов ожидать от канал, да. Это может быть правдой на этом надуманном примере, но, конечно, это не общий случай. –
Конечно! Все зависит от условий задания. Ваше решение более общее, поэтому я проголосовал за него – RoninDev