扩展 golang 结构

我尝试扩展基本结构,如下所示:


import (
    "fmt"
)

type A struct {
    A bool
    C bool
}

type B struct {
    A
    B bool
}

func main() {
    fmt.Println("Hello,playground")
    a := A{
        A: false,C: false,}

    b := B{
        a,true,}

    fmt.Print(b)
}

但是它创建了继承结构。这段代码的输出是:{{false false} true}

但我想得到 {false false true}

有可能吗?

love1033360299 回答:扩展 golang 结构

在“经典”OOP 意义上没有扩展,在结构中嵌入类型将不会添加嵌入结构的字段,而是添加带有单个字段 type 是嵌入类型,可以通过非限定类型名称引用:b.A

如果你只是想让它像你想要的那样被打印出来,你可以实现 fmt.Stringer 接口:

func (b B) String() string {
    return fmt.Sprintf("{%t %t %t}",b.A.A,b.C,b.B)
}

然后输出会像(在 Go Playground 上尝试):

{false false true}

但这就是它的结束。

本文链接:https://www.f2er.com/23903.html

大家都在问