字段的混合:值和值初始值设定项

Chr*_* G. 28 go

为什么我不能使用匿名字段创建以下内容?

type T1 struct {
    T1_Text string
}

type T2 struct {
    T2_Text string
    T1
}
Run Code Online (Sandbox Code Playgroud)

用于功能..

t := T2{
    T2_Text: "Test",
    T1{T1_Text: "Test"},
}
Run Code Online (Sandbox Code Playgroud)

给我:字段:值和值初始化器的混合?

Dej*_*i S 31

简要说明.

你得到它的原因是因为你只允许使用两种类型的初始化器中的一种而不是两者.

即你可以使用字段:值值.

使用你的例子你要么做

现场:值

t := T2{
    T2_Text: "Test",
    T1: T1{T1_Text: "Test"},
}
Run Code Online (Sandbox Code Playgroud)

或只是价值观

t := T2{
    "Test",
    T1{"Test"},
}
Run Code Online (Sandbox Code Playgroud)

希望能解释原因


wul*_*ong 18

缺少T1分配的属性名称.

t := T2{
    T2_Text: "Test",
    T1:      T1{T1_Text: "Test"},
}
Run Code Online (Sandbox Code Playgroud)

PS刚刚将@ twotwotwo的评论移至答案.