gpt4 book ai didi

go - 定义返回接口(interface) slice 的函数类型

转载 作者:行者123 更新时间:2023-12-01 22:39:36 24 4
gpt4 key购买 nike

我想定义一个返回接口(interface) slice 的处理程序类型,类似于以下示例:

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

我将如何定义一个返回接口(interface) slice 的通用函数类型? (我已阅读 https://github.com/golang/go/wiki/InterfaceSlice 但我不确定如何在此处应用它)。

最佳答案

即使输入 X实现接口(interface)I , []X不能分配给 []I .一个 []X[]I结构不同,[]X包含 X 的 slice s 和 []I包含实际上是成对值的接口(interface) slice ,每个都指向底层数据和类型。

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

func pg() []PersonInterface {
return []PersonInterface{&Person{Name: "John Doe"}}
}

关于go - 定义返回接口(interface) slice 的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com