Go语言非常灵活,只要为对象实现了相应的方法就可以把他看成实现了某个接口,类似于Durk Type,

为Fibonacci实现Read方法,就可以像读取文件一样,去读取下一个Fibonacci值。

示例代码:

ackage mainimport ("fmt""io""bufio""strings""strconv"
)func fibonacci() intGen {// 斐波那契数列,返回一个intGen类型a, b := 0, 1return func() int {a, b = b, a + breturn a}
}type intGen func() int    // 定义一个func类型,返回int类型func (g intGen) Read(p []byte) (n int, err error) {// 为intGen实现Read方法,以便printFileContents函数可以对其像读取文件一样操作next := g()if next > 100000 {return 0, io.EOF}//s := fmt.Sprintf("%d\n", next)s := strconv.Itoa(next) + "\n"return strings.NewReader(s).Read(p)    // 利用strings的NewReader方法来实现Read接口
}func printFileContents(reader io.Reader) {// 从reader中读取内容scanner := bufio.NewScanner(reader)for scanner.Scan() {fmt.Println(scanner.Text())}
}func main() {f := fibonacci()printFileContents(f)
}

转载于:https://www.cnblogs.com/vincenshen/p/9309562.html

Go 语言为Fibonacci函数实现Read方法相关推荐

  1. c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。

    编写一个程序,利用函数指针的方法,求任意给出两个整数的x和y的和.差. 程序流程图: 代码: #include<stdio.h> void main() {int x,y,*m=& ...

  2. c语言创建线程函数怎么使用方法,如何用C语言实现多线程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Windows操作系统,C语言实现多线程: #include #include DWORD APIENTRY ThreadOne ( LPVOID thr ...

  3. c语言else if函数的使用方法,ELSE IF THEN 函数的用法

    网友求助: 收阳:=C>=REF(C,1); 收阴:=C 放量:=VOL>REF(VOL,1); 缩量:=VOL if 收阳 AND 放量 then 得分:=2; else IF 收阳 A ...

  4. c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理

    在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...

  5. R语言ggplot2可视化散点图、可视化两个数值变量之间的关系、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息

    R语言ggplot2可视化散点图.可视化两个数值变量之间的关系(Scatter plot).使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线.自定义数据点的大小.色彩.添加 ...

  6. R语言ggplot2可视化散点图(scatter plot)、并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram)、使用geom_smooth函数基于lm方法拟合数据点之间

    R语言ggplot2可视化散点图(scatter plot).并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram).使用geom_smooth函数基于lm方法拟合数据点之间 ...

  7. R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线

    R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线.对指定范围的数据拟合曲线 目录

  8. R语言ggplot2可视化散点图、并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线

    R语言ggplot2可视化散点图.并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域(Scatterplot With Encircling).使用geom_smooth函数基 ...

  9. java调用wvsc.exe_c语言 函数的调用方法

    欢迎加入 编程爱好者 QQ群 群号 57616770 中都只有一个主函数main(), 但实用程序往往由多个函数组成.函数是C源程序的基本模块,通过对函数模块的调在第一章中已经介绍过,C源程序是由函数 ...

  10. Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法

    STC单片机Keil中C语言函数定位的方法:STC单片机Keil中C语言函数定位的方法 下面以演示程序进行说明 演示程序中有ReadIAP.ProgramIAP和EraseIAP三个函数 最终目的是将 ...

最新文章

  1. Kali Linux 64位架构安装Veil-Evasion
  2. 6.1.2.6 盒子
  3. 计算机审计中级培训结业考试,第二期计算机审计中级培训班结业考.doc
  4. C语言学习之1到5的乘积1到N的乘积
  5. Excel VBA(宏):添加宏
  6. [蓝桥杯][算法提高VIP]线段和点(排序+贪心)
  7. node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一
  8. SSM框架中的前后端分离
  9. 【机器学习】hist参数解读
  10. 开发-数据库-MongoDB初探
  11. 复习:关于类的继承和构造函数
  12. echarts官网在线编辑的图表如何导出svg
  13. Ajax前台传数组,Java后台接收方式
  14. 新浪离职员工写给新浪各位高层的信
  15. 03 在CentOS7中安装oracle11g
  16. 联想y7000 Linux显卡驱动,联想Y7000安装显卡驱动
  17. 从瓶盖挑战事件看企业如何做好新闻事件营销?
  18. 安利的短片 安利的真面目 zt
  19. linux桌面应用软件,ubuntu16.04-18.04 桌面应用软件推荐系列(一)
  20. 宋氏极简美学的编码风格

热门文章

  1. Win7X64位Seleniume+Eclipse+Pydev环境搭建
  2. python处理websocket
  3. Javascript设计网页中的下拉菜单
  4. 【SCIR AAAI2021】数据增强没效果?试试用Cluster-to-Cluster生成更多样化的新数据吧...
  5. 【一分钟知识】梯度下降与牛顿法对比
  6. NLP学习—11.实现基于PyTorch与LSTM的情感分类
  7. 吴恩达深度学习——超参数调优
  8. 不会Netty,你也永远不会熟悉Java
  9. 什么是Windows内核编程
  10. pandas小记:pandas高级功能