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 关注
- 70 浏览
添加回答
举报