channel通道关闭可以通过bool值来判断
package channel_clos
import (
"fmt"
"sync"
"testing"
)
func dataConsumer(ch chan int,wg *sync.WaitGroup){
go func() {
for i:=0 ; i<10; i++{
if data,ok := <-ch;ok{
fmt.Println(data)
}else{
fmt.Println("false")
}
}
wg.Done()
}()
}
func dataProducer(ch chan int,wg *sync.WaitGroup){
go func() {
for i:=0 ; i<10; i++{
ch<-i
}
close(ch)
wg.Done()
}()
}
func TestConsumer(t *testing.T){
var wg sync.WaitGroup
ch := make(chan int,1)
wg.Add(1)
dataProducer(ch,&wg)
wg.Add(1)
dataConsumer(ch,&wg)
wg.Wait()
}