С помощью следующего оператора select я хочу убедиться, что некоторая неблокирующая функция выполняется только одна за другой:
select {
case <-available:
default:
fmt.Println("busy")
return
}
go func() {
defer func() { available <- true }()
doSomethingOneByOne()
}()
В настоящее время я использую bool
в качестве типа канала, и он работает какожидается.
Что мне не нравится, так это то, что использование bool
предполагает, что имеет значение, является ли значение true
или false
.Но на самом деле это не имеет значения в этом случае.По моему мнению, это усложняет понимание кода, потому что он вводит в заблуждение.
Существует ли соглашение о том, какой тип использовать, когда значение не имеет значения?