关于接口和Read
来源:7-2 函数式编程例一

qq_心晴_29
2020-01-15
老师好,我刚刚开始学,基础有点薄弱,这个例子有些不是很懂,麻烦问一下:
- type intGen func() int里面调用的intGen是一个接口吗?接口的定义不是应该有interface吗?如type Retriever interface {
Get(url string) string
}
2.printFileContents(f)这句执行的时候是什么顺序呢?是因为定义了intGen的方法接收器吗?func (g intGen) Read(),那比如说他定义了多个函数呢?比如:func (g intGen) Write()? f并不是一个io.Reader类型呀?
好懵,求解答~谢谢
写回答
1回答
-
intGen不是接口,是一个类型。他被定义成函数func() int,也就是说,intGen是一种每调用一次会返回一个int的函数。
printFileContents(f),这里f必须是一个io.Reader,因为有
func printFileContents(reader io.Reader)
这里的f也的确是一个io.Reader,因为它的类型是intGen。而intGen的确实现了io.Reader接口,因为我们实现了func (g intGen) Read()。
我们当然也可以为intGen定义Write函数,定义了Write函数,它就即是Reader也是Writer,这么做编译是能够通过的。不过我们这里printFileContents只是需要一个Reader,Write函数不会被用到。
142020-04-07
相似问题