使用 mgo.Marshal() 编组指针
Marshalling pointers using mgo.Marshal()
我想对指针进行编码,而不是对值进行编码。目前,如果我们有一个结构:
type Order struct {
Item Tool
AssociatedItem *Tool
}
两者都在编组时内联到 mongo 内的订单文档中。
在 *Tool 的情况下,我需要能够执行自己的序列化。例如,在这种情况下,我可以只存储 Too 的 Id 而不是整个内容。不幸的是,mgo 中的覆盖机制是为工具定义一个 SetBSON() GetBSON,但它不区分指针和非指针。
处理此问题的最佳方法是什么?
为 "pointers" 使用不同的类型,例如:
type SelectiveTool Tool
func (st *SelectiveTool) SetBSON(raw bson.Raw) error {
return raw.Unmarshal(s)
}
type Order struct {
Item Tool
AssociatedItem *SelectiveTool
}
我想对指针进行编码,而不是对值进行编码。目前,如果我们有一个结构:
type Order struct {
Item Tool
AssociatedItem *Tool
}
两者都在编组时内联到 mongo 内的订单文档中。 在 *Tool 的情况下,我需要能够执行自己的序列化。例如,在这种情况下,我可以只存储 Too 的 Id 而不是整个内容。不幸的是,mgo 中的覆盖机制是为工具定义一个 SetBSON() GetBSON,但它不区分指针和非指针。
处理此问题的最佳方法是什么?
为 "pointers" 使用不同的类型,例如:
type SelectiveTool Tool
func (st *SelectiveTool) SetBSON(raw bson.Raw) error {
return raw.Unmarshal(s)
}
type Order struct {
Item Tool
AssociatedItem *SelectiveTool
}