Нет причины, по которой что-то не может (с точки зрения Go) записать обратно на канал после прочтения:
func Foo(c chan int) {
x := <-c
// do something to x
c <- x
}
Хотя это странно ... И, честно говоря, не рекомендую этого.Обычно я видел систему, состоящую из нескольких каналов с передачей данных без циклов.Думайте деревья вместо графиков.