2 回答

TA贡献1847条经验 获得超7个赞
在struct复合文字中,您可以省略为其列出值的字段名称(这称为“无键文字”),但是随后您必须按其声明顺序列出所有字段的初始值。或者,您可以使用键字面量,在其中显式说明要为其指定初始值的字段。在后者中,您可以省略任何字段,您可以只列出要为其提供初始值(不同于该字段的零值)的字段。
您使用了无键复合文字,在这种情况下,您必须列出所有字段的值,而没有列出。这是错误消息告诉您的内容:“ struct initializer中的值太少”。
字段名称(由protobuf生成)本身应为您提供提示:XXX_NoUnkeyedLiteral。建议您不要使用没有键的复合文字。
因此,请使用带有keys的复合文字,例如:
client := &Client{
Id: 123,
Name: "John",
Email: "john@aol.com",
}
这种形式更具可读性,并且不受结构变化的影响。例如,如果该Client结构将获得新的字段,或者将重新排列字段,则此代码将仍然有效并可以编译。

TA贡献1831条经验 获得超4个赞
在值可以解决构建错误之前添加字段名称,例如
client := &Client{Id: 123, Name: "John", Email: "john@aol.com"}
我通过查看grpc golang示例找到了这一点,但是也许有人可以解释为什么?;)
没有找到匹配的内容?试试慕课网站内搜索吧
- 2 回答
- 0 关注
- 352 浏览
添加回答
举报