首頁 > 後端開發 > Golang > 主體

如何使用 mgo (Go) 中的介面解組不同類型的嵌入式節點?

Patricia Arquette
發布: 2024-10-29 06:10:30
原創
536 人瀏覽過

 How to Unmarshal Embedded Nodes of Different Types Using Interfaces in mgo (Go)?

如何在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板