goroutine 和 channel
应用
实例1
package main import ( "fmt" ) // 写入数据 func writeData(intChan chan int) { for i := 1; i <= 50; i++ { // 放入数据 fmt.Printf("writeData=%v\n", i) intChan <- i } close(intChan) } // 读取数据 func readData(intChan chan int, exitChan chan bool) { for { v, ok :=<- intChan if !ok { break } fmt.Printf("readData=%v\n", v) } // readData 读取完数据后,即任务完成 exitChan <- true close(exitChan) } func main() { // 创建两个管道 intChan := make(chan int, 50) exitChan := make(chan bool, 1) // 协程 go writeData(intChan) go readData(intChan, exitChan) for { _, ok :=<- exitChan if !ok { break } } }