为了账号安全,请及时绑定邮箱和手机立即绑定

定义返回接口切片的函数类型

定义返回接口切片的函数类型

Go
守着星空守着你 2022-05-18 10:07:38
我想定义一个返回接口切片的处理程序类型,类似于以下示例:package mainimport "fmt"type PersonInterface interface {    GetName() string}type Person struct {    Name string}func (person *Person) GetName() string {    return person.Name}type PersonGetter func() []Personfunc 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但我不确定如何在此处应用它)。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

即使类型X实现了接口I,[]X也不能赋值给[]I。A[]X和[]I在结构上是不同的,[]X包含Xs 的切片,并[]I包含实际上是值对的接口切片,每个都指向底层数据和类型。


要执行您需要的操作,您需要更改函数声明以返回一片接口值:


func pg() []PersonInterface {

    return []PersonInterface{&Person{Name: "John Doe"}}

}


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号