Go 语言为Fibonacci函数实现Read方法
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方法相关推荐
- c语言学习-利用函数指针的方法,求任意给出两个整数的x和y的和、差。
编写一个程序,利用函数指针的方法,求任意给出两个整数的x和y的和.差. 程序流程图: 代码: #include<stdio.h> void main() {int x,y,*m=& ...
- c语言创建线程函数怎么使用方法,如何用C语言实现多线程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Windows操作系统,C语言实现多线程: #include #include DWORD APIENTRY ThreadOne ( LPVOID thr ...
- c语言else if函数的使用方法,ELSE IF THEN 函数的用法
网友求助: 收阳:=C>=REF(C,1); 收阴:=C 放量:=VOL>REF(VOL,1); 缩量:=VOL if 收阳 AND 放量 then 得分:=2; else IF 收阳 A ...
- c语言怎样获得函数内参数的值_C语言可变参数函数的实现原理
在本人的<C语言可变参数函数的实现方法>一文中,介绍了如何建立自己的可变参数函数. 下面继续介绍可变参数函数的实现原理. 在汇编语言程序设计中,详细介绍了子程序的实现思想: (1)子程序只 ...
- R语言ggplot2可视化散点图、可视化两个数值变量之间的关系、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息
R语言ggplot2可视化散点图.可视化两个数值变量之间的关系(Scatter plot).使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线.自定义数据点的大小.色彩.添加 ...
- R语言ggplot2可视化散点图(scatter plot)、并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram)、使用geom_smooth函数基于lm方法拟合数据点之间
R语言ggplot2可视化散点图(scatter plot).并在可视化图像的顶部和右边添加边缘直方图(Marginal Histogram).使用geom_smooth函数基于lm方法拟合数据点之间 ...
- R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线、对指定范围的数据拟合曲线
R语言ggplot2可视化:使用geom_smooth函数基于lm方法为每个分组的部分数据(subset data)拟合趋势关系曲线.对指定范围的数据拟合曲线 目录
- R语言ggplot2可视化散点图、并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域、使用geom_smooth函数基于loess方法拟合数据点之间的趋势关系曲线
R语言ggplot2可视化散点图.并使用geom_encircle函数自定义多边形圈定可视化图像中的指定区域(Scatterplot With Encircling).使用geom_smooth函数基 ...
- java调用wvsc.exe_c语言 函数的调用方法
欢迎加入 编程爱好者 QQ群 群号 57616770 中都只有一个主函数main(), 但实用程序往往由多个函数组成.函数是C源程序的基本模块,通过对函数模块的调在第一章中已经介绍过,C源程序是由函数 ...
- Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法
STC单片机Keil中C语言函数定位的方法:STC单片机Keil中C语言函数定位的方法 下面以演示程序进行说明 演示程序中有ReadIAP.ProgramIAP和EraseIAP三个函数 最终目的是将 ...
最新文章
- Kali Linux 64位架构安装Veil-Evasion
- 6.1.2.6 盒子
- 计算机审计中级培训结业考试,第二期计算机审计中级培训班结业考.doc
- C语言学习之1到5的乘积1到N的乘积
- Excel VBA(宏):添加宏
- [蓝桥杯][算法提高VIP]线段和点(排序+贪心)
- node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一
- SSM框架中的前后端分离
- 【机器学习】hist参数解读
- 开发-数据库-MongoDB初探
- 复习:关于类的继承和构造函数
- echarts官网在线编辑的图表如何导出svg
- Ajax前台传数组,Java后台接收方式
- 新浪离职员工写给新浪各位高层的信
- 03 在CentOS7中安装oracle11g
- 联想y7000 Linux显卡驱动,联想Y7000安装显卡驱动
- 从瓶盖挑战事件看企业如何做好新闻事件营销?
- 安利的短片 安利的真面目 zt
- linux桌面应用软件,ubuntu16.04-18.04 桌面应用软件推荐系列(一)
- 宋氏极简美学的编码风格