请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

next:=g()?这是什么语法,方法还能调用实现的函数的实现接口?

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)
}

正在回答 回答被采纳积分+3

1回答

ccmouse 2020-10-20 17:56:14

g是一个函数类型,所以可以调用。go语言中函数是一等公民,而且可以给任何自定义类型添加方法。

所以函数类型也可以有方法。

intGen是一个返回int的函数。使用起来的话,是这样的:

f := intGen(func () int {

    return 3

})

b := make([]byte, 1024)

f.Read(b)

我在课上使用了Scanner,Scanner在运行时会调用Read,而Read会调用g

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信