xxxxxxxxxx
package main
import (
"fmt"
"sync"
)
func main() {
greeks := []string{"plato", "socrates", "aristotle", "archimedes", "pythagoras", "democritus"}
var wg sync.WaitGroup
ch := make(chan string)
fmt.Println("Init")
for _, ph := range greeks {
wg.Add(1)
go func(str string, c chan string) {
defer wg.Done()
c <- str
}(ph, ch)
}
go func() {
wg.Wait()
defer close(ch)
}()
for c := range ch {
fmt.Println(c)
}
fmt.Println("End")
}