我在处理接口时遇到了问题。所以我使用 Go 包来处理我的 mongodb 东西,但我不想将该包导入到每个模型中。我想将尽可能多的子包(如模型)保留在标准库中。所以我想我会像这样布置一些接口:type m map[string]interface{}type collectionSlice interface { One(interface{}) error}type collection interface { Upsert(interface{}, interface{}) (interface{}, error) Find(interface{}) collectionSlice}type database interface { C(string) collection}问题是,当我去使用一个函数时:func FindItem(defindex int, d database) (*Item, error) {通过传入我的 mgo.Database 在使用接口的包中找到:item, err := dota.FindItem(int(defindex), ctx.Database)我收到编译器错误:controller/handlers.go:35: 不能在函数参数中使用 ctx.Database (type *mgo.Database) 作为 dota.database 类型:*mgo.Database 没有实现 dota.database(C 方法的类型错误)有 C(string ) *mgo.Collection 想要 C(string) dota.collection我对这个概念遗漏了什么?
1 回答
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消