登录
首页 >  Golang >  Go问答

当消息从未被评估时应使用哪种通道类型?

来源:stackoverflow

时间:2024-04-11 08:36:36 424浏览 收藏

一分耕耘,一分收获!既然都打开这篇《当消息从未被评估时应使用哪种通道类型?》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

通过以下 select 语句,我想确保某些非阻塞函数仅一一执行:

select {
case <-available:
default:
    fmt.Println("busy")
    return
}
go func() {
    defer func() { available <- true }()
    doSomethingOneByOne()
}()

目前我使用 bool 作为通道类型,并且它按预期工作。

我不喜欢的是,使用 bool 表明值是 truefalse 很重要。但实际上在这种情况下并不重要。在我看来,这使得理解代码变得更加困难,因为它具有误导性。

当值不重要时,是否有使用哪种类型的约定?


解决方案


chan struct{} 是一个有效的选择 — struct{} 是一个有效的类型,但该类型的值是 contains no data and has zero size,并且所有 struct{} 值无法区分,因此对于 Go 来说是 unit type。要构造 struct{} 类型的值以在通道上发送,您可以使用文字 struct{}{}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>