0

我试图让 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
}
4

1 回答 1

1

您可以执行以下操作:

func (b *Mbase) GetObj(attr string, val string, result interface{}) error {
    return b.coll.Find(bson.M{attr: val}).One(result)
}

不过,感觉助手做得不太好。Find+One 本身已经是通用的。bson.D{{attr, val}} 如果这就是你所需要的,我也会考虑使用而不是 bson.M。

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

于 2014-08-21T16:45:13.647 回答