我尝试扩展基结构,像这样:
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}
但就到此为止了。