diff options
author | Rob Pike <r@golang.org> | 2009-12-16 10:29:53 +1100 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2009-12-16 10:29:53 +1100 |
commit | aea97e0bd7da9cef1cc631ddbd3578a0877a4fcc (patch) | |
tree | 89f2452373bd20e8248aee25ea00a592177bca95 /doc/progs/sieve1.go | |
parent | 881d6064d23d9da5c7ff368bc7d41d271290deff (diff) | |
download | golang-aea97e0bd7da9cef1cc631ddbd3578a0877a4fcc.tar.gz |
update tutorial.
R=rsc
CC=golang-dev
http://codereview.appspot.com/179063
Diffstat (limited to 'doc/progs/sieve1.go')
-rw-r--r-- | doc/progs/sieve1.go | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/doc/progs/sieve1.go b/doc/progs/sieve1.go index 0ae3893ab..71468d06e 100644 --- a/doc/progs/sieve1.go +++ b/doc/progs/sieve1.go @@ -8,44 +8,44 @@ import "fmt" // Send the sequence 2, 3, 4, ... to returned channel func generate() chan int { - ch := make(chan int); + ch := make(chan int) go func(){ for i := 2; ; i++ { ch <- i } - }(); - return ch; + }() + return ch } // Filter out input values divisible by 'prime', send rest to returned channel func filter(in chan int, prime int) chan int { - out := make(chan int); + out := make(chan int) go func() { for { if i := <-in; i % prime != 0 { out <- i } } - }(); - return out; + }() + return out } func sieve() chan int { - out := make(chan int); + out := make(chan int) go func() { - ch := generate(); + ch := generate() for { - prime := <-ch; - out <- prime; - ch = filter(ch, prime); + prime := <-ch + out <- prime + ch = filter(ch, prime) } - }(); - return out; + }() + return out } func main() { - primes := sieve(); + primes := sieve() for { - fmt.Println(<-primes); + fmt.Println(<-primes) } } |