- 开启一个
writeData的goroutine,向channel写50个整数
- 开启一个
ReadData的goroutine,向channel读取WriteData写入的数据
writeData和ReadData要操作同一个channel
- 主线程要等到
writeData和ReadData都完成才能退出
package main
func WriteData(intchan chan int) {
defer close(intchan)
for i := 0; i < 50; i++ {
intchan <- i
}
}
func ReadData(intchan chan int, exitchan chan bool) {
defer close(exitchan)
for {
_, ok := <-intchan
if !ok {
break
}
}
exitchan <- true
}
func main() {
intchan := make(chan int, 50)
exitchan := make(chan bool, 1)
go WriteData(intchan)
go ReadData(intchan, exitchan)
<-exitchan
for {
if _, ok := <-exitchan; !ok {
close(exitchan)
break
}
}
}