【发布时间】:2018-10-08 21:44:21
【问题描述】:
我读过这个article,它有很好的在 Go 中模拟 MongoDB 的指南。但是Clone() 和Copy() 方法存在一些问题。
我创建了这个接口和结构:
type ISession interface {
DB(name string) IDatabase
Close()
Clone() ISession
Copy() ISession
}
type IDatabase interface {
C(name string) ICollection
}
type MongoSession struct {
dbSession *mgo.Session
}
func (s MongoSession) DB(name string) IDatabase {
return &MongoDatabase{Database: s.dbSession.DB(name)}
}
func (s MongoSession) Clone() ISession {
//return session.clone
return s.dbSession.Clone()
}
func (s MongoSession) Copy() ISession {
return s.dbSession.Copy()
}
但我得到了这个错误
不能使用 s.dbSession.Clone() (type *mgo.Session) 作为 type ISession in 返回参数:*mgo.Session 没有实现 ISession(类型错误 对于 Clone 方法)有 Clone() *mgo.Session 想要 Clone() ISession
不能使用 s.dbSession.Copy() (type *mgo.Session) 作为 type ISession in 返回参数:*mgo.Session 没有实现 ISession(类型错误 对于 Clone 方法)有 Clone() *mgo.Session 想要 Clone() ISession
如何将Clone() 和Copy() 方法添加到接口?
【问题讨论】: