为了账号安全,请及时绑定邮箱和手机立即绑定

映射为匿名结构成员

映射为匿名结构成员

Go
繁星淼淼 2021-06-11 14:01:08
我在 go 中遇到了一些我无法完全理解的行为,任何类型的解释都会很好:type Test struct{    Name string // or other metadata to be stored along the core map element    map[string]string}上面的代码将无法编译并出现unexpected map错误。这可能是因为 struct Field delarations 必须是类型,但是我无法理解为什么map[string]string不是类型。将其更改为type Embedded map[string]stringtype Test struct{    Name string    Embedded}get 围绕编译器错误,但仍然Test["someKey"]引发编译器错误 invalid operation: Test["someKey"] (index of type Test)。当然,直接使用 Test.Embedded["someKey"] 解决匿名字段是可行的,但我的问题是:为什么文字映射声明在非匿名字段声明中作为类型有效,但在匿名字段中无效为什么索引包含类型不起作用?为什么它不能工作?感谢您的澄清。
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

  1. 匿名字段只能是命名类型。您可能有点混淆TypeLiteralTypeTypeName

  2. 引用匿名字段由规范规定,始终由其类型名称完成。因此Test.Embedded[key]是唯一的法律形式。在这里,您可能会混淆嵌入式字段方法,这些方法是从嵌入式字段继承而来的,不需要使用字段名称和字段,它们必须使用它。


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信