本人是 golang 小白, 写一段代码, 通过go coroutine同时启动生产者和消费者,然后生产者没产生任何数据,消费者也没接收到任何数据,然后主线程就退出了
- 伪代码如下
var waiter sync.WaitGroup
func producer(data chan interface{}){
waiter.Add(1)
defer func(){
waiter.Done()
close(data)
}()
// start sending
for i:=0 ; i > 100; i++{
data <- i
}
}
func consumer(data chan interface{}){
waiter.Add(1)
defer waiter.Done()
end:
for {
select {
case item, Ok:= <- data:
if !Ok{
break end:
}else {
// do something
}
default:
continue
}
}
}
func main(){
defer waiter.Wait()
pipe := make(chan interface{})
go producer(pipe)
go consumer(pipe)
}
希望各位高手能指出我的错误 😱