为了账号安全,请及时绑定邮箱和手机立即绑定

映射类型的 golang 匿名字段

映射类型的 golang 匿名字段

Go
侃侃无极 2021-08-23 16:50:53
我以为我可以使用匿名字段制作有序的地图类型:type customMap struct{    map[string]string    ordered []string}我可以在那里引用地图customMapInstance["key"]并迭代ordered。唉,看来数组和映射不是有效的匿名字段。我怀疑有一个很好的理由......
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

从规范:


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


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


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


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


type MyMap map[string]string


type customMap struct{

    MyMap

    ordered []string

}

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


type customMap struct{

    MyMap MyMap

    ordered []string

}


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信