У меня есть решение задачи, которое компилируется и запускается, но не проходит тесты. Я только начал изучать Go язык и на данном этапе не знаю, как правильно решить проблему. Буду признателен за вашу помощь или совет. Я включил свой текущий код в сообщение.
Описание задачи.
Напишите функцию: fun c Merge2Channels (f fun c (int) int, in1 <- chan int, in2 <- chan int, out chan <- int, n int) в пакете main. </p>
Описание ее работы:
- проделайте следующие n раз
- прочтите по одному номеру из каждого из двух каналов in1 и in2, назовите их x1 и x2.
- вычислить f (x1) + f (x2) записать полученное значение в out
- Функция Merge2Channels должна быть неблокирующей, немедленно возвращая управление.
- Функция f может работают долго, чего-то ожидая или выполняя вычисления.
Формат ввода
- Количество итераций передается через аргумент n.
- Целые числа передаются через аргументы канала in1 и in2.
- Функция обработки чисел перед сложением передается через аргумент f.
Формат вывода
- Канал для вывода результатов передается через аргумент out.
Мой текущий код:
func calc(f func(int) int, x1 int, x2 int, out chan int) {
out <- f(x1) + f(x2)
}
func Merge2Channels(f func(int) int, in1 chan int, in2 chan int, out chan int, n int) {
for i := 0; i < n; i++ {
x1, x2 := <-in1, <-in2
go calc(f, x1, x2, out)
}
}