Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "sync"
  6. )
  7.  
  8. func main() {
  9. a1 := []string{"apple", "apricot"}
  10.  
  11. chan1 := make(chan string)
  12. chan2 := make(chan string)
  13. chan3 := make(chan string)
  14.  
  15. var wg sync.WaitGroup
  16.  
  17. go Pipe1(chan2, chan1, &wg)
  18. go Pipe2(chan3, chan2, &wg)
  19. go Pipe3(chan3, &wg)
  20.  
  21. func (data []string) {
  22. defer wg.Done()
  23. for _, s := range data {
  24. wg.Add(1)
  25. chan1 <- s
  26. }
  27. go func() {
  28. wg.Wait()
  29. close(chan1)
  30. }()
  31. }(a1)
  32. }
  33.  
  34. func Pipe1(out chan<- string, in <-chan string, wg *sync.WaitGroup) {
  35. defer wg.Done()
  36. for s := range in {
  37. wg.Add(1)
  38. out <- s + "s are"
  39. }
  40. }
  41. func Pipe2(out chan<- string, in <-chan string, wg *sync.WaitGroup) {
  42. defer wg.Done()
  43. for s := range in {
  44. wg.Add(1)
  45. out <- s + " good for you"
  46. }
  47. }
  48. func Pipe3(in <-chan string, wg *sync.WaitGroup) {
  49. defer wg.Done()
  50. for s := range in {
  51. wg.Add(1)
  52. fmt.Println(s)
  53. }
  54. }
  55.  
  56. apples are good for you
  57. apricots are good for you
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement