Skip to content

Instantly share code, notes, and snippets.

@gwang
Last active December 29, 2015 22:25
Show Gist options
  • Save gwang/9310babafc1e4edad34b to your computer and use it in GitHub Desktop.
Save gwang/9310babafc1e4edad34b to your computer and use it in GitHub Desktop.
Use Go channel to generate prime numbers
package main
import (
"fmt"
"runtime"
)
func main() {
runtime.GOMAXPROCS(4)
ch := make(chan int)
go generate(ch)
for {
prime := <- ch
fmt.Println(prime)
ch1 := make(chan int)
go filter(ch, ch1, prime)
ch = ch1
}
}
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
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment