我想在映射中包含不同的结构指针字段,如下所示。(当然下面的代码不起作用)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{},
}
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消