第二次看,还是很晕

来源:11-1 channel

qq_白澤_0

2020-08-15

之前做过python相关,异步没太关注,但是感觉go这里的channel似乎不是一个东西啊。

老师这里的收和发,还有没有好理解的方式。这个收和发是针对谁来说的?我感觉channel就是一个双向的通道,这个收和发搞得人晕了。

写回答

1回答

ccmouse

2020-08-19

的确和python的异步不一样。

你的理解是对的,channel就是一个双向的通道,连着两端。两端各有一个goroutine(main函数其实也是一个goroutine)。

收和发,就是字面意思。不知道同学具体晕在哪里,既然是通道,就可以往里面收和发。还可以补充一下问题。收和发都是针对channel的操作,发送方和接收方不是固定的。我说a := <- ch,此时我就是接收方,但接下来我又可以ch <- 123,此时我就是发送方。

不过这个收和发都是同步的,如果我去收,但是没人发,我就会阻塞,知道有人往里发为止。反之也是,如果没有人收,发送方也会阻塞。

1
1
qq_白澤_0
收和发同步这个点感觉很关键。谢谢老师
2020-08-19
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程