1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
package main
import ( "fmt" )
func sum(a []int, c chan int) { total := 0 for _, v := range a { total += v } c <- total } func fibonacci(n int, c chan int) { x, y := 1, 1 for i := 0; i < n; i++ { c <- x x, y = y, x+y } close(c) } func main() { a := []int{9, 2, 6, -5, 3, 0} c := make(chan int) go sum(a[:len(a)], c) go sum(a[len(a)/2:], c) x, y := <-c, <-c fmt.Println(x, y, x+y) c1 := make(chan int, 2) c1 <- 1 c1 <- 2 fmt.Println(<-c1) fmt.Println(<-c1) c2 := make(chan int, 10) go fibonacci(cap(c2), c2) for i := range c2 { fmt.Println(i) } }
|