欢迎,来自IP地址为:3.239.97.34 的朋友
Go语言的一个重要特性是其协程方式的并发程序设计,以及采用通道作为协程间通信的手段。以下是一个经典的Go语言并发程序示例,很说明问题的展示了Go程序协程以及通道来设计程序的方式。
程序的主要功能是不断的打印素数,具体代码如下:
package main import ( "fmt" ) func generate(ch chan int) { for i:=2;;i++{ ch <-i } } func filter(in,out chan int,prime int) { for { i:=<-in if i%prime !=0{ out <-i } } } func main() { ch :=make(chan int) go generate(ch) for{ prime :=<-ch fmt.Print(prime," ") chNew := make(chan int) go filter(ch,chNew,prime) ch=chNew } }
协程filter(in,out chan int,prime int)会拷贝整数到通道,丢弃掉可以被prime整除的数字,然后每个prime又开启了一个新的协程,生成器generate和选择器filter并发请求。