每当我从数据库中获取特定类型的对象时,我都希望运行某种“挂钩”。我以为Unmarshaler
接口非常适合此操作,但是...如何实现该接口而无需亲自手动解组每个字段?
我想做这样的事情:
func (t *T) UnmarshalBSON(b []byte) error {
// Simply unmarshal `b` into `t` like it would otherwise
bson.Unmarshal(b, t) // Obviously this won't work, it'll be an infinite loop
// Do something here
return nil
}
如何在不使用reflect pkg手动解组字段的情况下实现此目标?
答案 0 :(得分:0)
进行其他输入。它将继承字段,但不继承方法。因此,这里没有无限循环。
func (t *T) UnmarshalBSON(b []byte) error {
type Alias T
bson.Unmarshal(b, (*Alias)(t))
// Do something here
return nil
}