【发布时间】:2019-02-02 19:45:17
【问题描述】:
通过下面的选择语句,我想确保一些非阻塞函数只被一个一个地执行:
select {
case <-available:
default:
fmt.Println("busy")
return
}
go func() {
defer func() { available <- true }()
doSomethingOneByOne()
}()
目前我使用bool 作为频道类型,它按预期工作。
我不喜欢的是,使用bool 表明值是true 或false 很重要。但实际上在这种情况下并不重要。在我看来,这会使代码更难理解,因为它具有误导性。
当值无关紧要时,是否有使用哪种类型的约定?
【问题讨论】:
-
使用空结构。
-
只要不评估从通道中获取的值,我看不出有问题。你可以使用 Godoc/cmets。
标签: go