我是 go 的初学者,所以请多多包涵。我有一个定义如下的接口:
type DynamoTable interface {
Put(item interface{}) interface{ Run() error }
}
我也有这样的Repo结构:
type TenantConfigRepo struct {
table DynamoTable
}
我有一个结构dynamo.Table,它的Put函数定义如下:
func (table dynamo.Table) Put(item interface{}) *Put
该Put结构具有Run如下功能:
func (p *Put) Run() error
我想要做的是拥有一个通用DynamoTable接口,然后将其用于模拟和单元测试。然而,这会导致创建新 Repo 时出现问题:
func newDynamoDBConfigRepo() *TenantConfigRepo {
sess := session.Must(session.NewSession())
db := dynamo.New(sess)
table := db.Table(tableName) //=> this returns a type dynamo.Table
return &TenantConfigRepo{
table: table,
}
}
然而,这会引发这样的错误
cannot use table (variable of type dynamo.Table) as DynamoTable value in struct literal: wrong type for method Put (have func(item interface{}) *github.com/guregu/dynamo.Put, want func(item interface{}) interface{Run() error})
这对我来说很奇怪,因为据我所知,具有相同签名的接口Run() error对于结构来说应该足够了。Put我不确定我在这里做错了什么。
万千封印
相关分类