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

循环实现接口的项目数组

循环实现接口的项目数组

Go
千万里不及你 2021-09-27 16:03:06
假设我有一个实现接口的项目数组Reader:var items []Foo我如何将这些项目传递给一个需要读者的函数?func (items []Reader) { ... }我无法使用该类型,[]Reader因为我收到如下错误:Cannot use type `[]Foo` as type `[]Reader`...
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

例如,


package main


import (

    "bytes"

    "io"

)


var items []*bytes.Buffer


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


func main() {

    readers := make([]io.Reader, len(items))

    for i, item := range items {

        readers[i] = item

    }

    f(readers)

}


查看完整回答
反对 回复 2021-09-27
?
狐的传说

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

类似于 peterSO 的回答。


package main


import (

    "bytes"

    "io"

)


type Foo struct{}

type Foos []Foo



func (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())

}


查看完整回答
反对 回复 2021-09-27
  • 2 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信