我有以下通用接口
type Worker[input any, output any] interface {
Process(input) output
}
我正在尝试使用以下方法实现接口
type IntWorker[i int, o int] struct{}
func (w *IntWorker[i, o]) Process(input i) o {
fmt.Println("running i")
return 1
}
当我尝试使用它时,出现以下错误
mgr := internal.NewWorkManager()
iwkr := &IntWorker[int, int]{}
mgr.RegisterWorker(iwkr)
cannot use iwkr (variable of type *IntWorker[int, int]) as internal.Worker[any, any] value in argument to : *IntWorker[int, int] does not implement internal.Worker[any, any] (wrong type for method Process)
have Process(input int) int
want Process(any) any
注意最后一段,它说 want anybut have int。我不确定如何解决这个问题,因为我的印象是你可以将任何东西传递给any
变量被传递给这个函数:
func (m *WorkManager) RegisterWorker(f Worker[any, any]) uuid.UUID
九州编程
相关分类