diff options
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) } } |