Функция имеет цикл, который вызывает внутри нее подпрограмму go с пропущенным в нее каналом.
После этого я пытаюсь получать данные от канала до тех пор, пока он не будет иметь значения.
Функция go передает значение в канале при каждом вызове.
Мой канал работает бесконечно.
func (m * StreamsDAO) FindOutput (входная модель. Вход) ([] model.Output, ошибка) {
// SOME CODE
var chanNumber int = (input.EndTime - input.StartTime)/60
outputChan := make(chan model.Output, chanNumber)
for i := input.StartTime; i < input.EndTime ;i = i+(slider*60) {
// SOME CODE
go ForEachSlide(i, outputChan)
for outputC := range outputChan {
outputs = append(outputs, outputC)
}
}
return outputs, err
}
func ForEachSlide (i int, outputChan chan model.Output) {
// SOME CODE
outputChan <- output
// close(outputChan)
}
Его цикл бесконечен, поскольку нет остановки для приема из канала.
Если используется закрытый канал, то из канала получается только один элемент, как и ожидалось, но мне нужны все значения из канала.