将方法转换为通用方式,使用mgo查找

时间:2014-08-21 15:44:04

标签: go mgo

我试图获得getObj()函数会更加通用而且可以 使用任何类型,不仅像我的代码中的用户。 我在想一个接口而不是一个定义的结构,但我不能适应这个 对我的代码的想法,请有人能帮我一把吗?
提前致谢

type User struct {
    FirstName  string        `bson:"first_name"`
    LastName   string        `bson:"last_name"`
}

type Mbase struct {
    coll *mgo.Collection
    sess *mgo.Session
}

func (b *Mbase) getObj(attr string, val string) (res *User, err error) {
    err = b.coll.Find(bson.M{attr: val}).One(&res)
    if err != nil {
        return
    }
    err = nil
    return
}

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

func (b *Mbase) GetObj(attr string, val string, result interface{}) error {
    return b.coll.Find(bson.M{attr: val}).One(result)
}
但是,不觉得帮助者做得好多了。查找+一 本身已经是通用的。我还考虑使用bson.D{{attr, val}} 而不是bson.M如果这就是你需要的全部。

另外,请考虑一次在一个论坛上提问。