Guest User

Untitled

a guest
May 25th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.44 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "sync"
  6. )
  7.  
  8. var wg sync.WaitGroup
  9.  
  10. func SumFunc(s []int, c chan int) {
  11. defer wg.Done()
  12. if len(s) <= 1 {
  13. c <- s[0]
  14. } else {
  15. wg.Add(2)
  16. go SumFunc(s[:len(s)/2], c)
  17. go SumFunc(s[len(s)/2:], c)
  18. }
  19. }
  20.  
  21. func main() {
  22. s := []int{7, 2, 8, -9, 4, 0}
  23.  
  24. c := make(chan int)
  25.  
  26. wg.Add(1)
  27. go SumFunc(s, c)
  28.  
  29. wg.Wait()
  30. close(c)
  31. var sum int
  32. for element := range c {
  33. sum += element
  34. }
  35. fmt.Println(sum)
  36. fmt.Scanln()
  37. }
Add Comment
Please, Sign In to add comment