:= make(chan interface{})
output := make(chan interface{})
go func() {
output <- input
}()
wg := &sync.WaitGroup{}
wg.Add(1)
go func(d interface{}) {
time.Sleep(1 * time.Second)
for _ = range output {
fmt.Println("he-he")
}
fmt.Println("hey 1")
wg.Done()
}(input)
wg.Wait()
fmt.Println("hey 2")
ни "hey 1", ни "hey 2" - я не вижу. А ошибка - all goroutines are asleep - deadlock! на wg.Wait(). Вообще не понимаю почему. В этом и есть смысл WaitGroup, чтоб ждать когда горутина завершится
никто не пишет в input
Замени interface{} на конкретные типы и вставь после output <- input close(output)
Обсуждают сегодня