如果我有
type Foo struct {
// some data
}
func (f *Foo) Op1() bool {
// perform operation and return a bool
}
func (f *Foo) Op2(other int) bool {
// perform a different operation using internal data
// and the passed in parameter(s)
}
我知道我可以存储指向第一种方法的指针。
fn := f.Op1
并将其命名为
if fn(f) { // do something }
但如果我想对Op2
做同样的事情呢?
我目前正在伪装它,它定义了一个包装函数,它接受Foo
和值并调用操作。但这是很多锅炉板代码。
答案 0 :(得分:4)
使用方法表达式
在这种情况下,我们从类型中获取引用,然后您需要将实例作为第一个参数传递。
fn2 := (*Foo).Op2
f := &Foo{}
fn2(f, 2)
引用实例方法
在这种情况下,实例已绑定到方法,您只需提供参数:
fn2 := f.Op2
fn2(2)