在goroutine 写入channel,为何还要在goroutine关闭才能遍历

delaywu · 2021-10-14 17:09:35 · 1366 次点击

啥也不是,就是基础没学好

#3
更多评论
delaywu
Golang在路上...

我自己想应该是使用

wg.Wait()
close(ret)

阻碍的主线程,但是同时遍历是发生在主线程上。这时候定义的channel是无缓存的,这时候没办法发现这个无缓冲的channel又被消费的可能,故而会发生异常。这时候使用 协程的话,由于不堵塞。使得 channel消费成为的可能。

go func() {
        defer close(ret)
        wg.Wait()
    }()
#1
fenglangjuxu
出售域名 http://letsgo.xin

关注

#2