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

时间:2019-08-15 13:32:51

标签: go struct parameter-passing

我只想将属于“ any”结构的某些方法传递给接收方方法。

这些是原型方法。

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

我想要的是这里:

v.Rule.Checker(
    v.Rule.CheckEmpty(),
    v.Rule.CheckMax(),
)

但是我认为函数类型不相等,程序给我错误'类型无效类型为func()类型'。 有一种我想调用的方法的方法吗?

1 个答案:

答案 0 :(得分:0)

您想将函数本身传递给Checker,而不是函数调用的结果。为此,请将()放在函数名称之后,以便不调用该函数:

v.Rule.Checker(
    v.Rule.CheckEmpty,
    v.Rule.CheckMax,
)