请参阅this repo。我正在尝试创建数据存储区的接口。原因:我不想在开发时依赖真实的postgres db,但是我想在开发期间使用内存中实现。
只要我在main()中创建实例,此方法就起作用。例如:db := store.NewMemoryDB()
或db := store.NewDB()
。
但是现在我想基于布尔值创建一个实例。因此,我在商店包中创建了一个函数GetDatastore(bool)。这适用于postgres实现,但不适用于内存中。我收到以下错误:cannot use NewMemoryDB() (type *MockDB) as type *DB in assignment
。现在我真的不知道该怎么解决。有人可以给我提示吗?如何使内存中的一个* DB兼容?
答案 0 :(得分:1)
返回类型GetDatastore
是具体类型*DB
,而*MockDB
不是*DB
,这就是为什么会出现该错误的原因。相反,您想要返回的是Datastore
和*DB
都实现的 interface 类型*MockDB
。