接口作为结构中的字段,接口调用将输入作为同一结构的方法

就我而言,“RequestHandlerProxy”是一个结构,其字段为接口“IAdapter”,并且接口有许多要调用的方法,该方法的输入为结构“RequestHandlerProxy”。请帮助我如何处理这个?如何定义结构“RequestHandlerProxy”的值并传递?


以下是我的接口结构和方法: 接口“IAdapter”位于文件“adapters”中


type RequestHandlerProxy struct {

    TestMode       bool

    coreInstanceId string

    adapter        adapters.IAdapter

    coreProxy      adapterif.CoreProxy

}


func NewRequestHandlerProxy(coreInstanceId string, iadapter adapters.IAdapter, cProxy adapterif.CoreProxy) *RequestHandlerProxy {

    var proxy RequestHandlerProxy

    proxy.coreInstanceId = coreInstanceId

    proxy.adapter = iadapter

    proxy.coreProxy = cProxy

    return &proxy

}


func (rhp *RequestHandlerProxy) Adapter_descriptor() (*empty.Empty, error) {

    return new(empty.Empty), nil    

}


func (rhp *RequestHandlerProxy) Device_types() (*voltha.DeviceTypes, error) {

    return nil, nil

}


func (rhp *RequestHandlerProxy) Health() (*voltha.HealthStatus, error) {    

    return nil, nil

}

以下是我在适配器文件中的界面:


type IAdapter interface {

    Adapter_descriptor() error

    Device_types() (*voltha.DeviceTypes, error)

    Health() (*voltha.HealthStatus, error)

}


HUH函数
浏览 107回答 1
1回答

素胚勾勒不出你

您提供的代码有点难以理解(不完整且目的不清楚),因此这里是一个简化的示例,希望能够回答您的问题。RequestHandlerProxy请注意,从问题标题来看,我假设实现该接口的事实IAdapter让您感到困惑;这可能是无关紧要的(可能还有其他函数接受 an ,在其中传递 a或您自己的实现IAdapter是有意义的,如下所示)。RequestHandlerProxyIAdapteradaptImpl我已简化IAdapter为包含单个函数并将所有内容都放在一个文件中。要扩展它以在您的示例中工作,您将需要实现所有三个函数(Adapter_descriptor(), Device_types()& Health())。代码可以在go Playground中运行(如果这不能回答您的问题,也许您可以修改该代码以提供问题的简化示例)。package mainimport "errors"// IAdapter - Reduced to one function to make this simpletype IAdapter interface {    Adapter_descriptor() error}/// NewRequestHandlerProxy - Simplified version of the New functionfunc NewRequestHandlerProxy(iadapter IAdapter) {    return // code removed to make example simple}// adaptImpl - Implements the IAdapter interfacetype adaptImpl struct {    isError bool // example only}// Adapter_descriptor - Implement the function specified in the interfacefunc (a adaptImpl) Adapter_descriptor() error {    if a.IsError {        return errors.New("An error happened")    }    return nil}func main() {    // Create an adaptImpl which implements IAdapter     x := adaptImpl{isError: true}    NewRequestHandlerProxy(x)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go