Struct 结构初始化以满足没有显式方法定义的接口

Struct 结构初始化以满足没有显式方法定义的接口,struct,interface,go,Struct,Interface,Go,给定以下伪go代码: type( MyStruct struct { AFunction func(string) ([]byte, error) } MyInterface interface { AFunction(string) ([]byte, error) } ) func NeedThis(s string) ([]byte, error){ //relevant function stuff } m :

给定以下伪go代码:

type(
    MyStruct struct {
        AFunction  func(string) ([]byte, error)
    }

    MyInterface interface {
        AFunction(string) ([]byte, error)
    }
)

func NeedThis(s string) ([]byte, error){
    //relevant function stuff
}

m := &MyStruct{AFunction: NeedThis}

问题是m不满足MyInterface;我可以理解为什么会这样。有没有一种方法可以将函数附加到结构上,使构造的结构满足接口,而不在结构上实际构建定义方法?我对此有一些模糊/错误的推理,也许可以帮助我澄清这一点,或者展示一种更好的方式来通过这种情况进行推理

您是否可以在
MyStruct
上定义一个方法
a函数
,将其分派给存储的
a函数
函数指针?如果你有很多这样的东西,那就不太理想了,但我认为它能起作用吗

i、 例如

func (s MyStruct) AFunction(str string) ([]byte, error) {
    return s.AFunction(str)
}

编辑:上述操作可能会导致编译器出错,因为
s.affunction
不明确,因此您可能必须为它们(方法和函数指针)指定不同的名称,但应该给出正确的想法。

您可以将其包装在实现接口的另一个结构中:


你能更好地解释一下你要解决的问题吗?你看,这是不可能的,所以我不知道该怎么回答。我正在做一些事情,用一件事情来扩展另一件可能提供或不提供资产的事情,你可以看到它是如何在这里结束的:是的,这是我需要做的
package main

import "fmt"

type (
    MyStruct struct {
        AFunction func(string) ([]byte, error)
    }

    MyInterface interface {
        AFunction(string) ([]byte, error)
    }
)

func NeedThis(s string) ([]byte, error) {
    //relevant function stuff
    return nil, nil
}

type Proxy struct {
    *MyStruct
}

func (x *Proxy) AFunction(s string) ([]byte, error) {
    return x.MyStruct.AFunction(s)
}

func main() {

    m := &MyStruct{AFunction: NeedThis}
    p := &Proxy{m}
    _, ok := MyInterface(p).(MyInterface)
    fmt.Println(ok)
}