A
package main
import (
"fmt"
"sync"
"time"
)
func main() {
cities := []string{"London", "Paris", "Berlin", "Rome", "Madrid"}
channel := make(chan string)
startMultipleGoRoutines(channel, cities)
for v := range channel {
fmt.Println(v)
}
}
func startMultipleGoRoutines(channel chan<- string, cities []string) {
defer close(channel)
var wg sync.WaitGroup
wg.Add(len(cities))
for _, v := range cities {
go func(city string) {
time.Sleep(time.Second)
channel <- fmt.Sprintf(v + "1")
wg.Done()
}(v)
}
wg.Wait()
}