第二次看,还是很晕
来源:11-1 channel

qq_白澤_0
2020-08-15
之前做过python相关,异步没太关注,但是感觉go这里的channel似乎不是一个东西啊。
老师这里的收和发,还有没有好理解的方式。这个收和发是针对谁来说的?我感觉channel就是一个双向的通道,这个收和发搞得人晕了。
写回答
1回答
-
的确和python的异步不一样。
你的理解是对的,channel就是一个双向的通道,连着两端。两端各有一个goroutine(main函数其实也是一个goroutine)。
收和发,就是字面意思。不知道同学具体晕在哪里,既然是通道,就可以往里面收和发。还可以补充一下问题。收和发都是针对channel的操作,发送方和接收方不是固定的。我说a := <- ch,此时我就是接收方,但接下来我又可以ch <- 123,此时我就是发送方。
不过这个收和发都是同步的,如果我去收,但是没人发,我就会阻塞,知道有人往里发为止。反之也是,如果没有人收,发送方也会阻塞。
112020-08-19
相似问题