Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "sync"
- )
- func main() {
- a1 := []string{"apple", "apricot"}
- chan1 := make(chan string)
- chan2 := make(chan string)
- chan3 := make(chan string)
- var wg sync.WaitGroup
- go Pipe1(chan2, chan1, &wg)
- go Pipe2(chan3, chan2, &wg)
- go Pipe3(chan3, &wg)
- func (data []string) {
- defer wg.Done()
- for _, s := range data {
- wg.Add(1)
- chan1 <- s
- }
- go func() {
- wg.Wait()
- close(chan1)
- }()
- }(a1)
- }
- func Pipe1(out chan<- string, in <-chan string, wg *sync.WaitGroup) {
- defer wg.Done()
- for s := range in {
- wg.Add(1)
- out <- s + "s are"
- }
- }
- func Pipe2(out chan<- string, in <-chan string, wg *sync.WaitGroup) {
- defer wg.Done()
- for s := range in {
- wg.Add(1)
- out <- s + " good for you"
- }
- }
- func Pipe3(in <-chan string, wg *sync.WaitGroup) {
- defer wg.Done()
- for s := range in {
- wg.Add(1)
- fmt.Println(s)
- }
- }
- apples are good for you
- apricots are good for you
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement