49.笔记go语言——实现斐波那契
来源:互联网 发布:knn算法matlab 编辑:程序博客网 时间:2024/05/22 17:25
49.笔记go语言——实现斐波那契
代码
实现代码如下:
package main
import "fmt"
// fibonacci 函数会返回一个返回 int的函数。
func fibonacci() func()int {
var a int = 1
var b int = 1
return func() int {
c := a+b
a = b
b = c
return c
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
执行
2
3
5
8
13
21
34
55
89
144
关于闭包
当不希望给函数起名字的时候,可以使用匿名函数,例如:func(x, y int) int { return x + y }
。
下面是一个计算从 1 到 1 百万整数的总和的匿名函数:
func() {
sum = 0.0
for i := 1; i <= 1e6; i++ {
sum += i
}
}()
表示参数列表的第一对括号必须紧挨着关键字 func,因为匿名函数没有名称。花括号 {} 涵盖着函数体,最后的一对括号表示对该匿名函数的调用。
下面的例子展示了如何将匿名函数赋值给变量并对其进行调用:
package main
import "fmt"
func main() {
f()
}
func f() {
for i := 0;i < 4; i++ {
g :=func(i int) { fmt.Printf("%d ", i) } //此例子中只是为了演示匿名函数可分配不同的内存地址,在现实开发中,不应该把该部分信息放置到循环中。
g(i)
fmt.Printf(" - g is of type %T and has value %v\n", g, g)
}
}
输出:
0 - g is of type func(int) and has value0x401180
1 - g is of type func(int) and has value0x401180
2 - g is of type func(int) and has value0x401180
3 - g is of type func(int) and has value0x401180
那么什么是闭包:
闭包函数出现的条件:
1.被嵌套的函数引用到非本函数的外部变量,而且这外部变量不是“全局变量”
2.嵌套的函数被独立了出来(被父函数返回或赋值 变成了独立的个体),
而被引用的变量所在的父函数已结束
PS:对象是附有行为的数据,而闭包是附有数据的行为。
- 49.笔记go语言——实现斐波那契
- go语言斐波那契数列实现
- go语言之斐波那契数列的几种实现方法
- 43.笔记go语言圣经——go语言特性
- 45.笔记go语言圣经——go语言变量
- 50.笔记go语言——go语言函数细节
- 51.笔记go语言——go语言数据结构
- 59.笔记go语言——go语言中的反射
- 31.笔记go语言——go doc命令
- 42.笔记go语言圣经——go起源
- 46.笔记go语言圣经——go运行时
- 48.笔记go语言圣经——go图形化
- 55.笔记go语言——go类型
- 56.笔记go语言——go的函数类型
- Go 斐波那契闭包
- C语言排序(四)——三种方法实现斐波那契数列
- 2.笔记go语言——包
- 3.笔记go语言——函数
- 46.笔记go语言圣经——go运行时
- 数据库垂直拆分与水平拆分
- 47.笔记go——go连接Oracle
- 48.笔记go语言圣经——go图形化
- 《如何运行第一个C/C++语言程序》
- 49.笔记go语言——实现斐波那契
- JavaSE基础03
- 50.笔记go语言——go语言函数细节
- Qt二维图形编程之窗口-视口概念理解
- 51.笔记go语言——go语言数据结构
- Outlook邮箱重新配置
- 再按一次退出程序code
- 例题6-4 UVA11988 悲剧文本
- 52.笔记go语言——defer使用场景