我有功能func(context.Context, *domain.Scorecard) (*domain.Scorecard, error)我想将此作为接收接口的参数传递warehouse interface { Get(context.Context, *domain.Scorecard) (*domain.Scorecard, error)}前任:warehouseMock := usecase.WithScenarioFinder( func(player *domain.Player) (*domain.Scenario, error) { return nil,nil)传统形式是创建一个具有 Get 方法的结构,但我很好奇是否存在告诉“嘿,这是一个简单的 func,是同一家公司(没有名称),接受它”的方式
1 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
函数不实现仅具有相同签名的单个方法的接口。有关该主题的讨论,请参阅此 Go 问题。
创建适配器类型以将函数转换为接口:
type WarehouseFunc func(context.Context, *domain.Scorecard) (*domain.Scorecard, error)
func (f WarehouseFunc) Get(c context.Context, d *domain.Scorecard) (*domain.Scorecard, error) {
return f(c, d)
}
将匿名函数转换为如下接口:
itf = WarehouseFunc(func(c context.Context, d *domain.Scorecard) (*domain.Scorecard, error) {
return nil, nil
})
- 1 回答
- 0 关注
- 87 浏览
添加回答
举报
0/150
提交
取消