如何在Go中声明一个方法的函数指针

rik*_*und 5 go

我正在尝试创建一个具有方法接收器的函数的函数指针.但是,我无法弄清楚如何让它工作(如果可能的话)?

基本上,我有以下内容:

type Foo struct {...}
func (T Foo) Bar bool {
   ... 
}

type BarFunc (Foo) func() bool // Does not work.
Run Code Online (Sandbox Code Playgroud)

代码的最后一行给出了错误

syntax error: unexpected func, expecting semicolon or newline
Run Code Online (Sandbox Code Playgroud)

Ain*_*r-G 11

如果要创建指向方法的函数指针,则有两种方法.第一个基本上是将带有两个参数的方法转换为一个函数:

type Summable int

func (s Summable) Add(n int) int {
    return s+n
}

var f func(s Summable, n int) int = (Summable).Add

// ...
fmt.Println(f(1, 2))
Run Code Online (Sandbox Code Playgroud)

第二种方法将函数"绑定"到方法的接收器:

s := Summable(1)
var f func(n int) int = s.Add
fmt.Println(f(2))
Run Code Online (Sandbox Code Playgroud)

游乐场:http://play.golang.org/p/ctovxsFV2z.