💬 Даны два канала. В первый пишутся числа. Необходимо, чтобы числа читались из первого по мере поступления, что-то с ними происходило и результат записывался во второй канал.
Для решения этой задачи можно использовать горутину, которая будет читать числа из первого канала, выполнять некоторую операцию с каждым числом (например, умножать его на 2) и отправлять результат во второй канал.
📌 Вот пример решения на Go:
🔹 Функция
🔹 В функции
🔹 Горутина
🔹 В отдельной горутине числа от 1 до 5 отправляются в
🔹 В основной горутине читаются и выводятся результаты из
Для решения этой задачи можно использовать горутину, которая будет читать числа из первого канала, выполнять некоторую операцию с каждым числом (например, умножать его на 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.