学习golang要努力,但是不要急!今天的这篇文章《如何解决Golang中关闭chan的问题》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有
学习golang要努力,但是不要急!今天的这篇文章《如何解决Golang中关闭chan的问题》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!
问题内容需要编写一个删除重复项的函数 但我收到错误可能是什么问题
func remDup(in, out chan string) {
for {
val, ok := <-in
if ok == false {
break
} else {
if val != <-out{
out <- val
}
}
}
close(out)
}
:fatal error: all goroutines are asleep - deadlock!
我认为这是因为您使用无缓冲通道并且通道为空或发送者未准备好,如下所示:
out := make(chan string)
此行为在 channel specs 中得到了很好的解释:
还有来自effective Go channel的
如果您想让接收方等待来自通道的任何数据,并且您不知道发送方是否已向通道发送数据,请使用缓冲通道。
out := make(chan string, 100)
理论要掌握,实操不能落!以上关于《如何解决golang中关闭chan的问题》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!
--结束END--
本文标题: 如何解决golang中关闭chan的问题
本文链接: https://www.lsjlt.com/news/596636.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0