gpt4 book ai didi

go - 在 Go 中是否可以有一个指向带参数的成员函数/方法的指针?

转载 作者:IT王子 更新时间:2023-10-29 01:54:19 25 4
gpt4 key购买 nike

如果我有

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 和值并调用操作。但这是很多样板代码。

最佳答案

使用方法表达式

在这种情况下,我们从类型中获取一个引用,然后您需要传递一个实例作为第一个参数。

fn2 := (*Foo).Op2
f := &Foo{}
fn2(f, 2)

引用实例方法

在这种情况下,实例已经绑定(bind)到方法,您只需提供参数即可:

fn2 := f.Op2
fn2(2)

Playground :https://play.golang.org/p/e0gUIHzj7Z

关于go - 在 Go 中是否可以有一个指向带参数的成员函数/方法的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com