Go中如何将方法作为参数传递?

我只想将一些属于“任何”结构的方法传递给它们的接收者方法。


这些是原型方法。


func (r *Rules) Checker(fn ...func()) {}

func (r *Rules) CheckEmpty() {}

func (r *Rules) CheckMax()  {}

我想要的就在这里:


v.Rule.Checker(

    v.Rule.CheckEmpty(),

    v.Rule.CheckMax(),

)

但我认为函数类型不相等,程序给出错误“type void type as type func()”。有没有办法按照我的意愿调用这些方法?


千万里不及你
浏览 121回答 1
1回答

蝴蝶不菲

您想要将函数本身传递给Checker,而不是函数调用的结果。为此,请删除()函数名称后面的 ,这样该函数就不会被调用:v.Rule.Checker(     v.Rule.CheckEmpty,     v.Rule.CheckMax, )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go