Eth*_*han 4 struct map anonymous-class go
我以为我可以使用匿名字段制作有序的地图类型:
type customMap struct{
map[string]string
ordered []string
}
Run Code Online (Sandbox Code Playgroud)
我可以在哪里引用地图customMapInstance["key"]并迭代ordered.唉,似乎数组和地图不是有效的匿名字段.我怀疑这是有充分理由的......
从规格:
必须将嵌入类型指定为类型名称T或指向非接口类型名称*T的指针,并且T本身可能不是指针类型.
你看到它提到了"类型名称".
命名类型由(可能合格的)类型名称指定; 使用类型文字指定未命名的类型,类型文字从现有类型组成新类型.
换句话说,除非将映射或切片定义为命名类型,否则它们可能不是匿名的.例如:
type MyMap map[string]string
type customMap struct{
MyMap
ordered []string
}
Run Code Online (Sandbox Code Playgroud)
但是,即使嵌入了MyMap或切片类型,您仍然无法索引customMap.嵌入时,只有字段和方法可以"升级".对于其他一切,他们只是另一个领域.在上面的示例中,MyMap没有任何字段或方法,因此相当于:
type customMap struct{
MyMap MyMap
ordered []string
}
Run Code Online (Sandbox Code Playgroud)