上記の理由により、ドキュメントでインターフェイスを使用することはできません。デコーダーには、作成するタイプに関する情報がありません。
これを処理する1つの方法は、型情報を保持する構造体を定義することです。
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
このタイプにSetBSON関数を実装します。この関数は、型文字列をデコードし、その文字列に基づいて正しい型の値を作成し、その値にアンマーシャリングする必要があります。
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}