为了账号安全,请及时绑定邮箱和手机立即绑定

Go 不将 func 识别为有效接口

Go 不将 func 识别为有效接口

Go
拉风的咖菲猫 2022-10-10 19:37:24
我有功能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

})


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信