Go 按嵌入类型返回接口

Go 按嵌入类型返回接口,go,struct,interface,Go,Struct,Interface,我需要返回一个接口。但我有一个错误: cannot use B literal (type B) as type K in return argument: B does not implement K (missing Check method) 我想当我嵌入类型时,我得到了内部类型和接口类型的所有方法 package main import ( "fmt" ) type K interface { Check() } type A struct { A

我需要返回一个接口。但我有一个错误:

cannot use B literal (type B) as type K in return argument:
    B does not implement K (missing Check method)
我想当我嵌入类型时,我得到了内部类型和接口类型的所有方法

package main

import (
    "fmt"
)

type K interface {
    Check()
}

type A struct {
    A string
}

type B struct {
    B A
}

func (a A) Check() {
    fmt.Println(a.A)
}

func newB(a A) K {
    return B{B: a}
}

func main() {
    a := A{A: "A struct"}
    b := newB(a)

    b.Check()

}

如何解决这个问题?

B没有检查方法,在示例代码中也没有进行任何嵌入。只要检查一下机具就行了。错误信息非常清楚。

这不是嵌入:

type B struct {
    B A
}
type B struct {
  A
}
通过以上步骤,您可以:

var b B
b.B.Check()
var b B
b.Check()
这是:

type B struct {
    B A
}
type B struct {
  A
}
通过以上步骤,您可以:

var b B
b.B.Check()
var b B
b.Check()
你还有:

b.A.Check()

再次浏览Go,重点关注“嵌入”。我知道错误表明我需要添加方法检查。我将A嵌入到B中。但我希望通过从B类型中的A获取方法来返回接口(本例中为K)。因此,基本上我需要B类型中的A类型的方法,并且是K类型,而不需要显式重写方法来实现K接口。