как правильно узнать что можно закрыть канал? К примеру:
package main import "fmt" func worker(out chan interface{}) { out <-1 out <- 3 out <- 4 } func main() { ch := make(chan interface{}) go worker(ch) for { select { case val := <-ch: fmt.Println("val", val) } } }
и скажем так worker это черная коробка у меня сейчас deadlock я должен как то сделать close(ch) но что-то не усиживается как
1. сделать разные энкодеры(со своим интерфейсом например) 2. разные структуры 3. сделать поле-флаг по которому можно проверять отдавать или нет эти данные
как правильно узнать что можно закрыть канал? К примеру:
package main import "fmt" func worker(out chan interface{}) { out <-1 out <- 3 out <- 4 } func main() { ch := make(chan interface{}) go worker(ch) for { select { case val := <-ch: fmt.Println("val", val) } } }
и скажем так worker это черная коробка у меня сейчас deadlock я должен как то сделать close(ch) но что-то не усиживается как
Закрыть канал можно кода писатели перестали в него писать
как правильно узнать что можно закрыть канал? К примеру:
package main import "fmt" func worker(out chan interface{}) { out <-1 out <- 3 out <- 4 } func main() { ch := make(chan interface{}) go worker(ch) for { select { case val := <-ch: fmt.Println("val", val) } } }
и скажем так worker это черная коробка у меня сейчас deadlock я должен как то сделать close(ch) но что-то не усиживается как
конкретно в этом коде нужно добавить в конец worker close(out)