假设我有一个实现接口的项目数组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)
}
狐的传说
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())
}
- 2 回答
- 0 关注
- 237 浏览
添加回答
举报
0/150
提交
取消