我想在映射中包含不同的結(jié)構(gòu)指針字段,如下所示。(當(dāng)然下面的代碼不起作用)type StructA struct {}type StructB struct { }mymap := map[string]*struct{}{ "StructA": StructA, "StructB": StructB,}
1 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
正如@icza 所說,地圖的元素類型必須是特定類型。但這可能是一個可以存儲不同類型對象的接口。類型any(的別名interface{}在某些方面類似于指針(雖然它也存儲類型信息),所以你可以這樣做:
mymap := map[string]inteface{}{
"StructA": StructA{},
"StructB": StructB{},
}
為了更安全一點(diǎn),您可以將可以添加到映射的類型限制為僅兩個結(jié)構(gòu)。為此,您需要一個接口來指定兩種結(jié)構(gòu)類型都實現(xiàn)的函數(shù)。
type (
Common interface{ ImplementsCommon() }
A struct{}
B struct{}
)
func (A) ImplementsCommon() {}
func (B) ImplementsCommon() {}
mymap := map[string]Common{
"A": A{},
"B": B{},
}
- 1 回答
- 0 關(guān)注
- 103 瀏覽
添加回答
舉報
0/150
提交
取消