3.12 Go之并发打印(借助通道实现)
使用无缓冲通道实现并发打印数字
示例代码:
package main
import "fmt"
/*
Go之并发打印结果
 */
/* 定义一个打印函数 */
func printer(c chan int) {
    // 无限循环等待数据
    for {
       // 从chan当中接收数据
        data := <-c
        // 如果接收到的数据为0则退出
        if data == 0 {
            break
        }
        // 否则打印数据
        fmt.Println(data)
    }
    // 将0放入通道中
    c <- 0
}
/* 在main中进行调用 */
func main() {
    // 创建一个通道
    c := make(chan int)
    // 并发执行printer,传入channel
    go printer(c)
    // 循环发送值给通道
    for i := 1; i < 10; i++ {
        // 将数据发送到通道中
        c <- i
    }
    // 结束printer当中的循环
    c <- 0
    // 匿名接收
    <-c
}
    It's a lonely road!!!
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号