请稍等 ...
×

采纳答案成功!

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

取得下一个元素

func (g intGen) Read(p []byte) (n int, err error) {
  next := g() //此处 在调用次g()之后就取得了下一个元素
  s := fmt.Sprintf("%d\n", next)
  if next > 1000000 {
     return 0, io.EOF
  }
  return strings.NewReader(s).Read(p)
}


如上 老师您好、你说的next:=g()就取得了下一个元素这句话我没搞懂、为什么调用之后就取得下一个元素了啊?

正在回答

1回答

因为g是intGen,就是认为每次调用它会取得下一个元素。比如我们示例里传给它的斐波那契数列生成器,用了闭包的概念,你看每次调用f都会生成下一个数。

0 回复 有任何疑惑可以回复我~
  • 提问者 残天一月 #1
    懂了、其实这应该是一个主观说法、我之前以为返回的函数本身就会取得下一个元素的、谢谢老师
    回复 有任何疑惑可以回复我~ 2018-03-16 09:19:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信