最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 为什么人们在 golang 中使用内部函数?

    为什么人们在 golang 中使用内部函数?

    问题内容

    我正在阅读一些开源go项目,发现有很多代码实现如下:

    for id, s := range subscribers {
                    go func(id string, s *hellosaidsubscriber) {
                        select {
                        case <-s.stop:
                            unsubscribe <- id
                            return
                        default:
                        }
    
                        select {
                        case <-s.stop:
                            unsubscribe <- id
                        case s.events <- e:
                        case <-time.after(time.second):
                        }
                    }(id, s)
                }
    

    在上面的代码中,内部函数 go func...(id, s) 看起来没有必要。换句话说,如果我编写如下代码会有什么不同:

    for id, s := range subscribers {
                    
                        select {
                        case <-s.stop:
                            unsubscribe <- id
                            return
                        default:
                        }
    
                        select {
                        case <-s.stop:
                            unsubscribe <- id
                        case s.events <- e:
                        case <-time.After(time.Second):
                        }
                }
    

    正确答案

    在您的第一个示例中,这是一个匿名函数go 关键字使其充当 goroutine,这是 Go 中的并发模式。因此匿名函数(goroutine)内的代码将同时处理。

    在第二个示例中,排除 goroutine 意味着代码将按顺序运行。

    匿名函数是不包含任何名称的函数。当您想要创建内联函数时经常使用它。它可以形成闭合。匿名函数也称为函数文字

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 为什么人们在 golang 中使用内部函数?
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情