Kir*_*ril 41 struct initialization go
你如何初始化以下结构?
type Sender struct {
BankCode string
Name string
Contact struct {
Name string
Phone string
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了:
s := &Sender{
BankCode: "BC",
Name: "NAME",
Contact {
Name: "NAME",
Phone: "PHONE",
},
}
Run Code Online (Sandbox Code Playgroud)
没工作:
mixture of field:value and value initializers
undefined: Contact
Run Code Online (Sandbox Code Playgroud)
我试过了:
s := &Sender{
BankCode: "BC",
Name: "NAME",
Contact: Contact {
Name: "NAME",
Phone: "PHONE",
},
}
Run Code Online (Sandbox Code Playgroud)
没工作:
undefined: Contact
Run Code Online (Sandbox Code Playgroud)
Ain*_*r-G 55
您Contact是一个具有匿名结构类型的字段.因此,您必须重复类型定义:
s := &Sender{
BankCode: "BC",
Name: "NAME",
Contact: struct {
Name string
Phone string
}{
Name: "NAME",
Phone: "PHONE",
},
}
Run Code Online (Sandbox Code Playgroud)
但在大多数情况下,最好将rob74定义为单独的类型.
rob*_*b74 33
如何分别定义两个结构然后在"发件人"中嵌入"联系人"?
type Sender struct {
BankCode string
Name string
Contact
}
type Contact struct {
Name string
Phone string
}
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你的第二次初始化尝试将起作用.此外,您可以单独使用"联系人".
如果你真的想使用嵌套的结构,你可以使用Ainar-G的答案,但这个版本是不漂亮(如果结构是深嵌套它会变得丑陋,如图所示这里),所以我不会做如果可以避免的话.