我正在Go中编写一个Web应用程序,但是我的代码组织有些麻烦.
对于MongoDB上的基本CRUD操作,我总是需要在代码的开头做这样的事情:
session, err := mgo.Dial("localhost")
if err != nil {
return err
}
defer session.Close()
Run Code Online (Sandbox Code Playgroud)
但我不喜欢我总是要重复相同的代码.
有没有办法在我的代码中缩短它或避免大量的这些:
if err != nil {
return err
}
Run Code Online (Sandbox Code Playgroud)
我是Go的新手,所以也许我错过了一些明显的东西.
首先对于实际问题,不,这是检查错误的方法。
其次,使用 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()
}
Run Code Online (Sandbox Code Playgroud)
另请查看这篇关于 mgo 的文章(我不是作者,但它帮助我学习 mgo,不过可能有点过时了。)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |