我在 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]string
type Test struct{
Name string
Embedded
}
get 解决了编译器错误,但仍然Test["someKey"]
引发了编译器错误
invalid operation: Test["someKey"] (index of type Test)
。
当然,直接使用 Test.Embedded["someKey"] 处理匿名字段是可行的,但我的问题是:
- 为什么文字映射声明在非匿名字段声明中作为类型有效,但在匿名字段中无效
- 为什么索引包含类型不起作用?为什么它不能工作?
感谢您的澄清。