具有未导出字段的Golang结构文字语法

我有一个比较大的结构,直到现在我仍在使用结构文字语法实例化,例如:

Thing{

"the name",

...

}

我刚刚在Thing结构中添加了一个未导出的字段,现在Go在抱怨:implicit assignment of unexported field

'config' in Thing literal

即使结构上现在有未导出的字段,有什么办法可以继续使用文字语法?

回答:

如果您在文字中使用 键值

,则只能使用复合文字来创建在另一个包中定义的结构类型的

,因为这样就不需要为所有字段提供初始值,因此可以省去未导出的字段(仅声明包可以设置/更改)。

如果在同一程序包中声明了类型,则也可以设置未导出的字段:

t := Thing{

Name: "the name",

someUnexported: 23,

}

但是,如果类型是在另一个包中声明的,则只能为导出的字段提供初始值,我想这并不奇怪:

t := otherpackage.Thing{

Name: "the name",

// someUnexported will implicitly be its zero value

}

如果您需要未导出字段具有其类型的零值以外的值的struct值,则包本身必须导出某种构造函数或初始化程序(或setter方法),因为从外部(包)无法更改/设置未导出的字段。

以上是 具有未导出字段的Golang结构文字语法 的全部内容, 来源链接: utcz.com/qa/409567.html

回到顶部