【发布时间】:2018-02-24 21:47:24
【问题描述】:
在测试我的一些代码库时,我发现使用接口模拟“gopkg.in/mgo.v2”中的对象很有用。我遇到了一个问题,mgo.Query 没有实现我的接口 Query。
import mgo "gopkg.in/mgo.v2"
type Collection interface {
FindId(interface{}) Query
Find(interface{}) Query
UpdateId(interface{}, interface{}) error
Update(interface{}, interface{}) error
UpsertId(interface{}, interface{}) (interface{}, error)
Insert(...interface{}) error
RemoveId(interface{}) error
}
type Query interface {
One(interface{}) error
All(interface{}) error
Select(interface{}) Query
}
var _ Query = (*mgo.Query)(nil)
查询转换引发了错误:
cannot use (*mgo.Query)(nil) (type *mgo.Query) as type Query in assignment:
*mgo.Query does not implement Query (wrong type for Select method)
have Select(interface {}) *mgo.Query
want Select(interface {}) Query
这是无法在接口中定义链函数的问题吗?我不确定如何制作与 mgo 实现匹配的 Select 标头。
【问题讨论】: