Go中是否有类似于C ++绑定的内容?

时间:2018-07-31 18:39:22

标签: go callback

我正在尝试在Go中执行某些操作,类似于C ++的绑定。
在C ++中:

class A {
public:
    typedef std::function<bool(const string&)> Handler;
    bool func(A::Handler& handler) {
        // getData will get data from file at path
        auto data = getData(path);
        return handler(data);
    }
};

在另一个B类中:

Class B {
public:
    bool run() {
        using namespace std::placeholders;
        A::Handler handler = bind(&B::read, this, _1);
        m_A.initialize();
        return m_A.func(handler);
    }
    bool read(const string& data) {
        std::out << data << std::endl;
    }
private:
    A m_A {};
};

当调用B的run()函数时,它将绑定用A的处理程序读取的B类成员函数。 然后调用m_A.func(hander),它将调用getData()。然后将获得的数据解析为B::read(const string& data)

Go中有什么方法可以做到吗?如何在golang中创建转接呼叫包装器?

1 个答案:

答案 0 :(得分:0)

解决方案:

我要针对自己的问题发布自己的解决方案:

我将go函数作为另一个函数的参数传递来进行回调。以下代码是上述C ++代码的改进版本。

concat

A.go

type A struct { //... some properties } type Handler func(string) bool func (a *A) ReadRecords(handler Handler) bool { // getData will get data from file at path auto data = getData(path) return handler(data) } func (a *A) Initialize() { //... Initialization } 中,A是B结构的成员

B.go