Go 函数的单包装参数
我有33个回调函数: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等) 我相信我不是唯一一个看到这一系列争论而眼睛酸痛
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()){}