我试图概括一些代码中的值类型。我需要制作一大堆值,然后对它们进行操作。API 大致如下:
type Foo interface {
A(string) error
}
func Run(foo_gen func () (Foo, error)) {
...
}
另一方面,我有:
type bar struct {
...
}
func (bar Bar) A (s string) {
...
}
func main() {
foo_gen := func () (bar, error) {
return bar{}, nil
}
mypackage.Run(foo_gen)
}
这失败并显示错误消息:
cannot use foo_gen (type func () (bar, error)) as type func() (mypackage.Foo, error) in argument to mypackage.Run
我还很陌生,所以我可能缺少一些基本的东西。我所期待的是编译器会尝试通过匹配方法类型(类似于记录子类型关系)显式bar转换为Foo,但情况似乎并非如此?
HUWWW
叮当猫咪
相关分类