In Go, how do I pass a slice of interface to something that expects slice of a different compatible interface?
本问题已经有最佳答案,请猛点这里访问。
我有两个接口,
For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | type A interface { Close() error Read(b []byte) (int, error) } type Impl struct {} func (I Impl) Read(b []byte) (int, error) { fmt.Println("In read!") return 10, nil } func (I Impl) Close() error { fmt.Println("I am here!") return nil } |
自从
如果我试着把个人项目跨越功能,那就很好。但是,如果我尝试
Example:
ZZU1
如果我能通过一个
Actual implementation at https://play.golang.org/p/qoreqtqhd just uncomment the last two lines in
1 | main.go:38: cannot use list (type []A) as type []io.Reader in argument to slice |
我问过类似的问题在go中,如何用slices生成通用函数?
遗憾的是,这绝对是Go的一个弱点。唯一能解决这个问题的方法是使用来自[]a的元素生成一个新的类型为[]io.reader的切片。