如何在mgo (Go) 中使用介面作為模型
在處理包含多個不同類型的嵌入節點的工作流程時,利用Go 介面是一種常見的方法。然而,在嘗試使用 mgo 解組這些文件時,它提出了挑戰。
要解決此問題,您不能直接在文件中包含介面。這是因為解碼器缺乏創建適當實例所需的類型資訊。
可行的解決方案包括建立一個包裝器結構來儲存實際節點及其類型:
type NodeWithType struct { Node Node `bson:"-"` Type string } type Workflow struct { CreatedAt time.Time StartedAt time.Time CreatedBy string Nodes []NodeWithType }
到完成設定後,您必須在 NodeWithType 上實作 SetBSON 函數。此函數將解碼類型字串,根據該字串實例化正確的節點類型,然後將文件解組到新建立的實例中。實作 SetBSON 可確保每個嵌入節點被正確解組為正確的特定類型。
以上是如何使用 mgo (Go) 中的介面解組不同類型的嵌入式節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!