其他分享
首页 > 其他分享> > 3.12 Go之并发打印(借助通道实现)

3.12 Go之并发打印(借助通道实现)

作者:互联网

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
}

 

标签:printer,3.12,打印,chan,并发,Go,main,通道
来源: https://www.cnblogs.com/JunkingBoy/p/16033303.html