首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang wire正在抛出wire:类型x未实现接口错误

Golang wire正在抛出wire:类型x未实现接口错误
EN

Stack Overflow用户
提问于 2019-06-06 04:27:12
回答 1查看 765关注 0票数 1

这是一个示例代码,其中大部分是从官方golang文档here复制的,我只添加了最后一段代码,它为一个使用Fooer接口的类型生成一个实例。

代码语言:javascript
复制
 type Fooer interface {
        Foo() string
}

type MyFooer string

func (b *MyFooer) Foo() string {
    return string(*b)
}

func provideMyFooer() *MyFooer {
    b := new(MyFooer)
    *b = "Hello, World!"
    return b
}

type Bar string

func provideBar(f Fooer) string {
    // f will be a *MyFooer.
    return f.Foo()
}

type test struct {
    f Fooer 
}
var Set = wire.NewSet(
    provideMyFooer,
    wire.Bind(new(Fooer), new(*MyFooer)),
    provideBar)
// InitializeMasterRepo init repo
func testbuild() test  {
    wire.Build(
        Set)
    return test{}
}

但是,我得到了以下错误

代码语言:javascript
复制
wire: D:\git\go\vendor.manager\src\lib\di\appbuild.go:50:5: **vendor.manager/lib/di.MyFooer does not implement vendor.manager/lib/di.Fooer
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 04:32:49

类型错误。您的接收器是*MyFooer;您的值是(正如错误所说的) **MyFooer。这是因为您正在调用new(*MyFooer)new已经返回了一个指向所传递类型的指针,因此,由于您将一个指针类型传递给它,因此您将获得一个指向指针的指针。

按如下所示更改该行以修复此错误:

代码语言:javascript
复制
wire.Bind(new(Fooer), new(MyFooer))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56467534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档