【发布时间】:2020-12-23 15:41:52
【问题描述】:
我很确定我以前看过一个关于此的问题,但现在找不到。
基本上我想select 在一个被阻止的呼叫以及一个频道上。
我知道我可以将被阻止的调用推送到 goroutine 中并通过通道等待结果,但是这感觉像是错误的解决方案。
有没有一种我想念的惯用方式来写这个?
最好是这样的:
select {
case a <- c:
...
case ans := connection.Read():
...
}
【问题讨论】:
-
您的“建议”解决方案将等待被阻止的呼叫或频道,以先发生者为准。根据您的问题文本,您希望等待被阻止的呼叫和频道(等待两者完成)。你想要哪个?
-
@icza 是的对不起的意思或:)
标签: go concurrency channel