【发布时间】:2023-03-30 15:12:02
【问题描述】:
我尝试扩展基本结构,如下所示:
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}
有可能吗?
【问题讨论】:
-
“但我想得到” --- 这是一个 XY 问题。您真的只想这样打印,还是有其他原因您没有透露?
-
“有可能吗?”不,嵌入是组合,而不是继承。你将无法模仿继承。
-
fmt.Print(b)是您真正想要的还是只是用于测试?如果您想使用encoding/json编码为 JSON,b将使用所有顶级键{"A":false,"C":false,"B":true}编组。请参阅:play.golang.org/p/S3pS1PU_0WY。 -
@zerkms 我想获得像
{ A bool B bool C bool }这样的结构 -
@SergeyGorbunov 您对嵌套有什么实际问题?