循环实现接口的项目数组

假设我有一个实现接口的项目数组Reader

var items []Foo

我如何将这些项目传递给一个需要读者的函数?

func (items []Reader) { ... }

我无法使用该类型,[]Reader因为我收到如下错误:

Cannot use type `[]Foo` as type `[]Reader`...


千万里不及你
浏览 238回答 2
2回答

BIG阳

例如,package mainimport (    "bytes"    "io")var items []*bytes.Bufferfunc f(items []io.Reader) {}func main() {    readers := make([]io.Reader, len(items))    for i, item := range items {        readers[i] = item    }    f(readers)}

狐的传说

类似于 peterSO 的回答。package mainimport (    "bytes"    "io")type Foo struct{}type Foos []Foofunc (f Foos) toReaders() []io.Reader {    readers := make([]io.Reader, len(f))    for i, item := range f {        readers[i] = item    }    return  readers}func f(items []io.Reader) {}func main() {    var x Foos    f(x.toReaders())}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go