类型为map的golang匿名字段

我以为我可以使用匿名字段来创建有序地图类型:

type customMap struct{

map[string]string

ordered []string

}

我可以在其中引用地图customMapInstance["key"]并对其进行迭代ordered。,似乎数组和映射不是有效的匿名字段。我怀疑有充分的理由…

回答:

从规格:

必须将嵌入类型指定为类型名称T或指向非接口类型名称* T的指针,并且T本身可能不是指针类型。

您会看到它提到了“类型名称”。

命名类型由(可能是限定的)类型名指定;未命名的类型使用类型文字来指定,该文字由现有类型组成一个新类型。

换句话说,除非将映射或切片定义为命名类型,否则它们可能不是匿名的。例如:

type MyMap map[string]string

type customMap struct{

MyMap

ordered []string

}


但是,即使您嵌入MyMap或切片类型,您仍将无法为customMap编制索引。嵌入时,只能“提升”字段和方法。对于其他一切,它们只是另一个领域。在上面的示例中,MyMap没有任何字段或方法,因此等效于:

type customMap struct{

MyMap MyMap

ordered []string

}

以上是 类型为map的golang匿名字段 的全部内容, 来源链接: utcz.com/qa/404208.html

回到顶部