我在某些行为中遇到了一些我完全无法理解的行为,任何形式的解释都会很好:
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]string
type Test struct{
Name string
Embedded
}
得到编译器错误,但仍Test["someKey"]
引发编译器错误
invalid operation: Test["someKey"] (index of type Test)
。
当然直接使用Test.Embedded [“someKey”]来解决这个令人厌恶的领域, 但我的问题是:
感谢您的澄清。
答案 0 :(得分:2)
Anonymous fields必须只是命名类型。你可能有点困惑Type,LiteralType和TypeName。
参考匿名字段的规格是由其类型名称完成的。因此Test.Embedded[key]
是唯一的法律形式。在这里,您可能会混淆嵌入式字段方法,它们是从嵌入字段继承的,无需使用字段名称和必须使用它的字段 value 。 / p>