6

我正在用 Go 编写一个 Web 应用程序,但是在整理我的代码时遇到了一些麻烦。
对于 MongoDB 上的基本 CRUD 操作,我总是必须在我的代码开头做这样的事情:

session, err := mgo.Dial("localhost")
if err != nil {
    return err
}
defer session.Close()

但我不喜欢我总是必须重复相同的代码这一事实。

有没有办法让它更短或在我的代码中避免很多这种情况:

if err != nil {
    return err
}

我是 Go 新手,所以也许我遗漏了一些明显的东西。

4

1 回答 1

3

首先对于实际问题,不,那是检查错误的方法。

其次,使用mgo的正确方法是有一个sesson,每次需要做某事的时候克隆它,例如:

var (
    mgoSession *mgo.Session
)

func init() {
    sess, err := mgo.Dial("localhost")
    if err != nil {
        panic(err) // no, not really
    }
    mgoSession = sess
}

func do_stuff_with_mgo() {
    sess := mgoSession.Clone()
    defer sess.Close()
    //do stuff with sess
}

func main() {
    go do_stuff_with_mgo()
    go do_stuff_with_mgo()
    do_stuff_with_mgo()
}

另请查看有关mgo的这篇文章(我不是作者,但它帮助我学习了mgo,虽然它可能有点过时了。)

于 2014-08-02T21:41:31.793 回答