1. Задача: Написать функцию joinChannels, которая объединяет несколько каналов типа int в один общий канал
func joinChannels(channels ...chan int) chan int {
merged := make(chan int)
var wg sync.WaitGroup
for _, ch := range channels {
wg.Add(1)
go func() {
defer wg.Done()
for values := range ch {
merged <- values
}
}()
}
go func() {
wg.Wait()
close(merged)
}()
return merged
}Ответ
Реализация представлена выше.
2. Задача: Ускорить выполнение кода с последовательными запросами к API
func main() {
url := "https://www.wildberries.ru/getPurchasesByID?id=%d"
wg := &sync.WaitGroup{}
idChan := make(chan int, 100)
go func() {
for id := 0; id < 100_000; id++ {…