我在Go中编写了一个Web应用程序,但是我的代码组织有些麻烦 对于MongoDB上的基本CRUD操作,我总是必须在代码的开头做这样的事情:
session, err := mgo.Dial("localhost")
if err != nil {
return err
}
defer session.Close()
但我不喜欢我总是要重复相同的代码。
有没有办法让它缩短或避免在我的代码中使用很多:
if err != nil {
return err
}
我是Go的新手,所以也许我错过了一些明显的东西。
答案 0 :(得分: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的this文章(我不是作者,但它帮助我学习了mgo,但它可能有点过时了。)