语法辅助方法类型定义?

时间:2017-05-31 19:59:25

标签: go

道歉,如果这是显而易见的;对Golang来说相对较新。

我需要传递一个带有指针接收器的函数作为方法的参数,并将该函数指针存储在其他结构中等。

没有接收器,这很简单。对于诸如......的功能。

func Sample(ctx *Context, arg int) (err error)

...我可以使用语法...

创建一个函数类型
type SampleFunc func (ctx *Context, arg int) (err error)

...但是对于具有接收器的功能,例如......

func (ctx *Context) Sample(arg int) (err error)

...什么是类型定义的语法?我试过......

type SampleFunc func (ctx *Context) (arg int) (err error)

...但这只会产生syntax error: unexpected ( after top level declaration

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

语法是

type SampleFunc func (ctx *Context, arg int) (err error)

Sample方法分配给SampleFunc类型的变量,如下所示:

var f SampleFunc = (*Context).Sample

指针接收器方法需要(*)部分。这样称呼:

 f(ctx, 1)

playground example