Go 函数的单包装参数

Go 函数的单包装参数,go,arguments,Go,Arguments,我有33个回调函数: func Cb1(){} func Cb2(){} func Cb3(){} func Cb4(){} func Cb5(){} //其他28次回调。。。 所有这些都应该传递到一个函数中。所以,我用了最明显的方式: 类型fn func() 功能我的(Cb1 fn、Cb2 fn、Cb4 fn、Cb3 fn、Cb5 fn等){ Cb1() Cb2() Cb4() Cb5() } 我的(Cb1、Cb2、Cb4、Cb3、Cb5等) 我相信我不是唯一一个看到这一系列争论而眼睛酸痛

我有33个回调函数:

func Cb1(){}
func Cb2(){}
func Cb3(){}
func Cb4(){}
func Cb5(){}
//其他28次回调。。。
所有这些都应该传递到一个函数中。所以,我用了最明显的方式:

类型fn func()
功能我的(Cb1 fn、Cb2 fn、Cb4 fn、Cb3 fn、Cb5 fn等){
Cb1()
Cb2()
Cb4()
Cb5()
}
我的(Cb1、Cb2、Cb4、Cb3、Cb5等)
我相信我不是唯一一个看到这一系列争论而眼睛酸痛的人

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

函数My(cb={}){
cb.Cb1();
cb.Cb2();
cb.Cb4();
cb.Cb5();
}
我的({
Cb1,
Cb2,
Cb4,
Cb5
});

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

为了扩展Burak Serdar的上述评论,我建议使用变量函数参数

这将为您提供如下“我的”功能:-

// My invokes the supplied list of callbacks
func My(cbs ...func()) {
    for _, cb := range cbs {
        cb()
    }
}
您可以在此处查看并运行它:

您也可以用同样的方法,将它们封装在数据结构中,如切片、映射或结构;或者你可以深入研究潜在的问题,因为这种情况真的不应该出现在围棋中。看起来您正试图在Go中编写JavaScript,这将导致许多问题,并且很难读取代码。声明
函数My(cb…func()){}