Я хотел бы определить тип обработчика, который возвращает часть интерфейсов, аналогично следующему примеру:
package main
import "fmt"
type PersonInterface interface {
GetName() string
}
type Person struct {
Name string
}
func (person *Person) GetName() string {
return person.Name
}
type PersonGetter func() []Person
func pg() []*Person {
return []*Person{&Person{Name: "John Doe"}}
}
func main() {
var person PersonInterface
person = &Person{"John Doe"}
fmt.Println(person)
var personGetter PersonGetter
personGetter = pg
}
Однако, если я запускаю это, я получаю
cannot use pg (type func() []*Person) as type PersonGetter in assignment
Как бы я определить общий тип функции, который возвращает часть интерфейсов? (Я прочитал https://github.com/golang/go/wiki/InterfaceSlice, но я не уверен, как применить это здесь).