💬 Даны два канала. В первый пишутся числа. Необходимо, чтобы числа читались из первого по мере поступления, что-то с ними происходило и результат записывался во второй канал. 



Для решения этой задачи можно использовать горутину, которая будет читать числа из первого канала, выполнять некоторую операцию с каждым числом (например, умножать его на 2) и отправлять результат во второй канал.



📌 Вот пример решения на Go:



package main



import (

"fmt"

)



func processNumbers(input <-chan int, output chan<- int) {

for num := range input {

// Пример операции: умножаем число на 2

result := num * 2

output <- result

}

close(output)

}



func main() {

inputChannel := make(chan int)

outputChannel := make(chan int)



go processNumbers(inputChannel, outputChannel)



// Отправляем числа в первый канал

go func() {

for i := 1; i <= 5; i++ {

inputChannel <- i

}

close(inputChannel)

}()



// Читаем результаты из второго канала

for result := range outputChannel {

fmt.Println(result)

}

}





🔹 Функция processNumbers принимает два канала: input для чтения и output для записи. Она читает каждое число из input, умножает его на 2 и отправляет результат в output. После обработки всех чисел она закрывает канал output.

🔹 В функции main, создаются два канала: inputChannel и outputChannel.

🔹 Горутина processNumbers запускается для обработки чисел, передавая ей эти каналы.

🔹 В отдельной горутине числа от 1 до 5 отправляются в inputChannel, после чего канал закрывается.

🔹 В основной горутине читаются и выводятся результаты из outputChannel.