Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Go中将方法作为参数传递?_Go_Struct_Parameter Passing - Fatal编程技术网

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

如何在Go中将方法作为参数传递?,go,struct,parameter-passing,Go,Struct,Parameter Passing,我只想将一些属于“any”结构的方法传递给接收方方法 这些是原型方法 func r*规则Checkerfn…func{} func r*规则CheckEmpty{} func r*规则CheckMax{} 我想要的是: v、 规则检查 v、 Rule.CheckEmpty, v、 Rule.CheckMax, 但我认为函数类型不相等,程序给我的错误是“type void type as type func”。 有没有一种方法可以像我所希望的那样调用这些方法?您希望将函数本身传递给Checker,

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

这些是原型方法

func r*规则Checkerfn…func{} func r*规则CheckEmpty{} func r*规则CheckMax{} 我想要的是:

v、 规则检查 v、 Rule.CheckEmpty, v、 Rule.CheckMax, 但我认为函数类型不相等,程序给我的错误是“type void type as type func”。
有没有一种方法可以像我所希望的那样调用这些方法?

您希望将函数本身传递给Checker,而不是函数调用的结果。要执行此操作,请在函数名称后删除,以便不调用该函数:

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

类型void type as type func在Go中不是错误。你能公布你收到的实际错误吗?看起来您可能需要的是v.Rule.Checkerv.Rule.CheckEmpty,v.Rule.CheckMax-传递函数,而不是调用它们并传递它们没有的返回值。谢谢,我现在已经完全理解了。