函数代码如下:(mongodb包)
```
func MC(collection string, f func(*mgo.Collection)) {
session := Session()
defer func() {
session.Close()
if err := recover(); err != nil {
// Log("M", err)
}
}()
c := session.DB(databaseName).C(collection)
f(c)
}
```
这个函数的第二个参数是一个函数
调用:(main包,调用mongodb包的MC函数)
```
mongodb.MC(traceInfo.TableName(), func(coll *mgo.Collection) {
// c.Find(bson.M{"_id": id}).One(traceInfo)
traceInfo.Id_ = bson.NewObjectId()
err := coll.Insert(traceInfo)
})
```
对于传递的func()参数,插入操作会返回一个err参数`err := coll.Insert(traceInfo)`,
如果将err这个返回值传递main包?我尝试在函数`func(coll *mgo.Collection)` 中做`return err`,会报错
我想不出来如果得到错误信息,难道需要使用 Recover捕获异常?如果捕捉呢
有疑问加站长微信联系(非本文作者)