1 回答

TA貢獻1828條經驗 獲得超3個贊
執行以下操作:
var unit = Unit{
category: {
name: "foo",
},
}
將不起作用,因為語言規范說您必須在使用復合文字值初始化結構的字段時指定類型。例如嵌套結構、映射或切片等。
由于category的類型是未命名的復合類型,要初始化該字段,您必須重復未命名復合類型的定義。
type Unit struct{
category struct{
name string
}
}
var unit = Unit{
category: struct{
name string
}{
name: "foo",
},
}
或者,不要使用匿名結構。
type Category struct {
name string
}
type Unit struct{
category Category
}
var unit = Unit{
category: Category{
name: "foo",
},
}
如果你想在聲明它的包之外使用這個結構,你必須導出它的字段
type Category struct {
Name string
}
type Unit struct{
Category Category
}
// ...
var unit = mypkg.Unit{
Category: mypkg.Category{
Name: "foo",
},
}
- 1 回答
- 0 關注
- 86 瀏覽
添加回答
舉報