Bạn không thể sử dụng giao diện trong tài liệu vì lý do bạn đã lưu ý. Bộ giải mã không có thông tin về loại để tạo.
Một cách để xử lý điều này là xác định một cấu trúc để chứa thông tin kiểu:
type NodeWithType struct {
Node Node `bson:"-"`
Type string
}
type Workflow struct {
CreatedAt time.Time
StartedAt time.Time
CreatedBy string
Nodes []NodeWithType
}
Thực hiện chức năng SetBSON trên loại này. Hàm này sẽ giải mã chuỗi loại, tạo giá trị thuộc loại chính xác dựa trên chuỗi đó và không quản lý giá trị đó.
func (nt *NodeWithType) SetBSON(r bson.Raw) error {
}