ホームページ > バックエンド開発 > Golang > mgo (Go) のインターフェイスを使用して、さまざまなタイプの組み込みノードをアンマーシャリングする方法

mgo (Go) のインターフェイスを使用して、さまざまなタイプの組み込みノードをアンマーシャリングする方法

Patricia Arquette
リリース: 2024-10-29 06:10:30
オリジナル
566 人が閲覧しました

 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
}
ログイン後にコピー

Toセットアップが完了したら、NodeWithType に SetBSON 関数を実装する必要があります。この関数は、タイプ文字列をデコードし、その文字列に基づいて正しいノード タイプをインスタンス化し、ドキュメントを新しく作成されたインスタンスにアンマーシャリングします。 SetBSON を実装すると、埋め込まれた各ノードが正しい具象型に適切にアンマーシャリングされることが保証されます。

以上がmgo (Go) のインターフェイスを使用して、さまざまなタイプの組み込みノードをアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート