В Concurrency Go Patterns (https://www.youtube.com/watch?v=f6kdp27TYZs) есть пример кода, который выглядит следующим образом:
func fanIn(in1 <-chan string) <-chan string { c:=make(chan string) go func() { for { c <- <-in1 } }() return c }
Для меня это выглядит очень странно c <- <-in1. Что это значит?
c <- <-in1
c <- <-in1 означает:
in1Val := <-in1 // read from channel in1 c <- in1Val // write the value from in1 channel to `c` channel
Если вы пишете такой код в первый раз - используйте больше этого подробного кода, чтобы понять, что происходит лучше.