登录
首页 >  Golang >  Go问答

函数的单个包装参数

来源:stackoverflow

时间:2024-04-14 08:42:32 319浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《函数的单个包装参数》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我有 33 个回调函数:

func cb1() {}
func cb2() {}
func cb3() {}
func cb4() {}
func cb5() {}
// other 28 callbacks ...

所有这些都应该传递到一个函数中。所以,我用最明显的方式做到了:

type fn func()

func my(cb1 fn, cb2 fn, cb4 fn, cb3 fn, cb5 fn, ... and so on ...){
   cb1()
   cb2()
   cb4()
   cb5()
}

my(cb1, cb2, cb4, cb3, cb5, ... and so on ...)

我确信我不是唯一一个看到这“一连串”争论而感到眼睛酸痛的人。

在 javascript 中,我会将它们全部包装在一个类/对象中,并将它们作为单个参数传递,如下所示:

function My(cb = {}){
   cb.Cb1();
   cb.Cb2();
   cb.Cb4();
   cb.Cb5();
}

My({ 
   Cb1,
   Cb2,
   Cb4,
   Cb5
});

但是我们如何在 go 中做到这一点呢?


解决方案


为了扩展 burak serdar 上面的评论,我建议使用 variadic 函数参数。

这将为您提供一个“我的”功能,如下所示:-

// My invokes the supplied list of callbacks
func My(cbs ...func()) {
    for _, cb := range cbs {
        cb()
    }
}

您可以在此处查看并运行它: https://play.golang.org/p/P3xDYN-1C7M

终于介绍完啦!小伙伴们,这篇关于《函数的单个包装参数》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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