आपने जिस कारण से नोट किया है, उसके लिए आप किसी दस्तावेज़ में इंटरफ़ेस का उपयोग नहीं कर सकते। डिकोडर को बनाने के प्रकार के बारे में कोई जानकारी नहीं है।
इसे संभालने का एक तरीका प्रकार की जानकारी रखने के लिए एक संरचना को परिभाषित करना है:
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 {
}