/*
go 关闭通道
关闭通道的意思是该通道将不再允许写入数据
这个方法可以让管道数据的接收端知道数据已经全部发送完成了
*/
package main
import (
"fmt"
)
func main() {
//当我们数据发送完成后 我们关闭jobs通道
jobs := make(chan int, 5)
done := make(chan bool)
go func() {
for {
j, more := <-jobs
if more {
fmt.Println("received job", j)
} else {
fmt.Println("received all jobs")
done <- true
return
}
}
}()
for j := 1; j <= 3; j++ {
jobs <- j
fmt.Println("send job", j)
}
close(jobs)
fmt.Println("sent all jobs")
<-done
}