我有功能
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 方法的結構,但我很好奇是否存在告訴“嘿,這是一個簡單的函式,是同一家公司(沒有名稱),接受它”的方法
uj5u.com熱心網友回復:
函式不使用僅具有相同簽名的單個方法來實作介面。有關該主題的討論,請參閱此 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
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/353826.html
