next:=g()?这是什么语法,方法还能调用实现的函数的实现接口?
来源:7-2 函数式编程例一

佛系biu
2020-10-17
func (g intGen) Read(p []byte) (int, error) {
// 这块的语法规则老师帮忙看看
next := g()
if next > 10000 {
return 0, io.EOF
}
//s := strconv.Itoa(next) + "\n"
s := fmt.Sprintf("%d\n", next)
return strings.NewReader(s).Read(p)
}
写回答
1回答
-
ccmouse
2020-10-20
g是一个函数类型,所以可以调用。go语言中函数是一等公民,而且可以给任何自定义类型添加方法。
所以函数类型也可以有方法。
intGen是一个返回int的函数。使用起来的话,是这样的:
f := intGen(func () int {
return 3
})
b := make([]byte, 1024)
f.Read(b)
我在课上使用了Scanner,Scanner在运行时会调用Read,而Read会调用g
00
相似问题