我有一个相当大的结构体,直到刚才我一直在使用结构体字面量语法进行实例化,例如:
Thing{
"the name",
...
}
我刚刚给Thing
结构体添加了一个未导出的字段,现在Go在抱怨:隐式赋值Thing文字中未导出的字段“config”
。
即使在结构体上有一个未导出的字段,是否有任何方法可以继续使用字面量语法?
我有一个相当大的结构体,直到刚才我一直在使用结构体字面量语法进行实例化,例如:
Thing{
"the name",
...
}
我刚刚给Thing
结构体添加了一个未导出的字段,现在Go在抱怨:隐式赋值Thing文字中未导出的字段“config”
。
即使在结构体上有一个未导出的字段,是否有任何方法可以继续使用字面量语法?
t := Thing{
Name: "the name",
someUnexported: 23,
}
但是,如果类型在另一个包中声明,你只能为导出字段提供初始值,这并不令人惊讶:
t := otherpackage.Thing{
Name: "the name",
// someUnexported will implicitly be its zero value
}
还有一点需要补充。如果一个结构体的属性需要在包外可见,那么所有属性都应该以大写字母开头。例如:
t := Thing
{
Name: "the name", // <-- This will work because Name start with capital letter
someUnexported: 23, // <-- this wont work because someUnexported starts with small letter
}