博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言中的匿名函数和闭包的样子
阅读量:6340 次
发布时间:2019-06-22

本文共 637 字,大约阅读时间需要 2 分钟。

1). 函数也是值,可以像普通值那样,传来传去;

2). 匿名函数;

3). 函数的类型,类似于:func(float64,float64) float64

==========================

1). 在函数式程序设计语言中,闭包都是个重要的玩意;

2). 闭包有时候让人赶脚捉摸不透;

3). 例子中 sum 的作用域、生命周期;实际上在一个函数内部返回一个匿名函数/闭包,如果这个返回函数使用了原来函数内的变量值,那么这些变量的生命周期便延长了;这不是 c 的风格,c 中的管你返回神马东西,局部 auto 变量函数返回后就消亡了(当然你可以使用 static 变量)!

package mainimport (	"fmt"	"math")func adder() func(int) int {	sum := 0	return func(x int) int {		sum += x		return sum	}}func main() {		hypot := func(x, y float64) float64 {		return math.Sqrt(x*x + y*y)	}		fmt.Printf("%T %g", hypot, hypot(3, 4))		pos, neg := adder(), adder()	for i := 0; i < 10; i++ {		fmt.Println(pos(i), neg(-2*i),)	}}

  

转载地址:http://xmhoa.baihongyu.com/

你可能感兴趣的文章
缓存系统的决策:什么数据要缓存?什么缓存数据要丢给业务?
查看>>
Oracle sqlplus 常用设置
查看>>
win10下如何解决U盘连接上电脑但不显示的问题
查看>>
git----------如何安装gitlab,使用步骤。
查看>>
Python学习笔记(一)
查看>>
服务器添加用户
查看>>
Socket通信
查看>>
一个将PDF转word、图片、PPT的在线工具
查看>>
C#网络编程—HTTP应用编程(转)
查看>>
预处理指令关键字
查看>>
静态代理
查看>>
【敏捷开发】敏捷开发方法综述
查看>>
使用NPOI导出Excel文件
查看>>
SpringMVC实现多文件(批量)上传
查看>>
C# 设置Excel单元格属性
查看>>
sound类做一个音乐播放器
查看>>
《20年后,你靠什么生存(孙继滨)》讲座观后感 转
查看>>
php 利用composer引用第三方类库构建项目
查看>>
Tcp/IP 端口耗尽
查看>>
一次小系统的快速开发经历
查看>>