Skip to content

Instantly share code, notes, and snippets.

@pingrunhuang
Created April 24, 2018 12:24
Show Gist options
  • Save pingrunhuang/1d5956a92c3fa20c8371cfb34872f3f8 to your computer and use it in GitHub Desktop.
Save pingrunhuang/1d5956a92c3fa20c8371cfb34872f3f8 to your computer and use it in GitHub Desktop.

Revisions

  1. pingrunhuang created this gist Apr 24, 2018.
    24 changes: 24 additions & 0 deletions channel.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    package main

    import "fmt"

    // channel as argument
    func sum(s []int, c chan int) {
    sum := 0
    for _, v := range s {
    sum += v
    }
    c <- sum // send sum to c
    }

    func main() {
    s := []int{7, 2, 8, -9, 4, 0}

    // initialize a channel
    c := make(chan int)
    go sum(s[:len(s)/2], c)
    go sum(s[len(s)/2:], c)
    x, y := <-c, <-c // receive from c

    fmt.Println(x, y, x+y)
    }