扩展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}

有可能吗?

<classical"OOP意义上,在struct中嵌入类型将>而不是添加嵌入结构体的字段,但添加单个字段其中类型为嵌入类型,可通过未限定类型名称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}

但就到此为止了。

最新更新