多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
通道关闭与广播 === - 向关闭的channel发送数据,会导致panic - v,ok <-ch;ok为bool,true正常,false通道关闭 - 所有channel接收者都会在channel关闭时,立刻从阻塞等待中返回,ok = false.这个广播机制常被利用,进行多个订阅者同时发送信号 ~~~ func TestService(t *testing.T) { dataCh := make(chan int,10) var wg sync.WaitGroup wg.Add(1) go production(dataCh,&wg) wg.Add(1) go consume(dataCh,&wg) wg.Wait() } // 生产者 func production(ch chan int,wg *sync.WaitGroup) { for i:=0;i<1000;i++{ ch<-i } close(ch) wg.Done() } // 消费者 func consume(ch chan int,wg *sync.WaitGroup) { forleep: for { select { case data,ok := <-ch: if ok { fmt.Println(data) }else{ break forleep } } } wg.Done() } ~~~