我有一个频道:
aChan := make(chan struct{})
和超时时间var t time.Duration。如果通道关闭,或者t达到超时,我希望程序退出, 如果 t 是正的 duration。
我知道我可以使用外部 if else 循环,但这看起来非常多余:
if t >= time.Duration(0) {
select {
case <-time.After(t):
fmt.Fprintln(os.Stdout, "timeout!"))
close(timeoutChan)
case <-aChan:
fmt.Fprintln(os.Stdout, "aChan is closed"))
return
}
} else {
select {
case <-aChan:
fmt.Fprintln(os.Stdout, "aChan is closed"))
return
}
}
有没有更优雅的方式来写这个?
隔江千里
相关分类