猿问

Golang 地图上的结构指针字段

我想在映射中包含不同的结构指针字段,如下所示。(当然下面的代码不起作用)


type StructA struct {


}

type StructB struct {

    

}


mymap := map[string]*struct{}{

    "StructA": StructA,

    "StructB": StructB,

}


猛跑小猪
浏览 89回答 1
1回答

梦里花落0921

正如@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上试试
随时随地看视频慕课网APP

相关分类

Go
我要回答