在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代表:

in1Val := <-in1 // read from channel in1
c <- in1Val // write the value from in1 channel to `c` channel

如果您是第一次编写此类代码,请使用更多详细代码,以更好地了解情况。

07-27 13:42