在自定义类型里面,讲了扩展Read
方法,但是到mian方法运行的时候,又用的printFileContents
这个函数,但是intGen和printFileContents是怎么联系一起的,好像没有说明名,我寻思得在前面声明个接口什么的,等到最后也没有,但是居然能运行,求教一下老师,这两个函数是怎么联系在一起的,
还有就是照着视频里的代码去敲,报
cannot use f (type func() int) as type io.Reader in argument to printFileContents: func() int does not implement io.Reader (missing Read method)
下面是我的代码:
package main
import (
"bufio"
"fmt"
"io"
"strings"
)
func fibonacci() func() int{
a,b :=0,1
return func() int{
a,b = b,a+b
fmt.Println(a)
return a
}
}
type intGen func() int
func (g intGen) Read(p []byte) (n int,err error){
next:=g()
if next>10000{
return 0,io.EOF
}
s:=fmt.Sprintf("%d\n",next)
return strings.NewReader(s).Read(p)
}
func printFileContents(reader io.Reader){ //这里io.Reader改成 intGen就可以,我的go版本是1.15
scanner := bufio.NewScanner(reader)
for scanner.Scan(){
fmt.Println(scanner.Text())
}
}
func main(){
f:= fibonacci()
printFileContents(f)
}