如何在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 可確保每個嵌入節點被正確解組為正確的特定類型。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3