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

Golang 地图上的结构指针字段

Golang 地图上的结构指针字段

Go
猛跑小猪 2022-12-19 21:14:49
我想在映射中包含不同的结构指针字段,如下所示。(当然下面的代码不起作用)type StructA struct {}type StructB struct {    }mymap := map[string]*struct{}{    "StructA": StructA,    "StructB": StructB,}
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

正如@icza 所说,地图的元素类型必须是特定类型。但这可能是一个可以存储不同类型对象的接口。类型any(的别名interface{}在某些方面类似于指针(虽然它也存储类型信息),所以你可以这样做:


mymap := map[string]inteface{}{

    "StructA": StructA{},

    "StructB": StructB{},

}

为了更安全一点,您可以将可以添加到映射的类型限制为仅两个结构。为此,您需要一个接口来指定两种结构类型都实现的函数。


type (

    Common interface{ ImplementsCommon() }

    A      struct{}

    B      struct{}

)


func (A) ImplementsCommon() {}

func (B) ImplementsCommon() {}


    mymap := map[string]Common{

        "A": A{},

        "B": B{},

    }

在Go Playground上试试



查看完整回答
反对 回复 2022-12-19
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

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