私は完全に理解できないgoのいくつかの動作につまずいており、あらゆる種類の説明が歓迎されます:
type Test struct{
Name string // or other metadata to be stored along the core map element
map[string]string
}
上記のコードはコンパイルに失敗し、unexpected map
エラーが発生します。これはおそらく、構造体フィールド宣言が型でなければならないため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"] で直接処理することもできますが、私の質問は次のとおりです。
- リテラル マップ宣言が非匿名フィールド宣言の型として有効であるのに、匿名フィールドでは有効でないのはなぜですか
- 包含型のインデックス作成が機能しないのはなぜですか? うまくいかないのはなぜですか?
明確にしていただきありがとうございます。