关于接口和Read

来源:7-2 函数式编程例一

qq_心晴_29

2020-01-15

老师好,我刚刚开始学,基础有点薄弱,这个例子有些不是很懂,麻烦问一下:

  1. 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回答

ccmouse

2020-01-19

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函数不会被用到。

1
4
ZoneTw
回复
ccmouse
了解, 謝謝老師
2020-04-07
共4条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程