因此,我想了解一下函数名称,以基于环境变量选择接口的实现。我在以下代码中复制了它:
package test
type Fooer interface {
Foo() error
}
type Bar struct{}
func NewBar() (*Bar, error) { return &Bar{}, nil }
func (b *Bar) Foo() error { return nil }
type Baz struct{}
func NewBaz() (*Baz, error) { return &Baz{}, nil }
func (b *Baz) Foo() error { return nil }
var constructors map[string]func() (*Fooer, error)
func init() {
constructors = map[string]func() (*Fooer, error){
"bar": NewBar,
"baz": NewBaz,
}
}
当我时,这将引发以下错误go build test.go
:
./test.go:21: cannot use NewBar (type func() (*Bar, error)) as type func() (*Fooer, error) in map value
./test.go:22: cannot use NewBaz (type func() (*Baz, error)) as type func() (*Fooer, error) in map value
那我在做什么错?我可以使用a *Fooer
作为构造函数的返回类型吗?解决此问题的实际最佳方法是什么?(我是新来的)
*Fooer
,a Fooer
就足够了。Fooer
(而不是*Fooer
!),但这似乎很尴尬。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句