博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go基础知识学习(3)闭包
阅读量:7222 次
发布时间:2019-06-29

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

hot3.png

##闭包本质是函数+引用环境,外形是一个匿名函数。 闭包类似一个函数工厂,绑定不同的引用环境,生成不同的函数。 我们还是以回调函数中的例子来说明,不过我们换成闭包来实现“抽象” 将一个数组中偶数的值相加后的结果输出, 将一个数组中奇数的值相加后的结果输出。

package mainimport (	"fmt")func main() {	//create slice	s := make([]int, 10)	fmt.Println(s)	// init	for i, _ := range s {		s[i] = i	}	fmt.Println(s)	//closure	doubleSum := sum(isDouble)	singleSum := sum(isSingle)	fmt.Println(doubleSum(s))	fmt.Println(singleSum(s))}/** callback function : elemet who is even number**/func isDouble(a int) bool {	if a%2 == 0 {		return true	} else {		return false	}}/** callback function : elemet who is single number**/func isSingle(a int) bool {	if a%2 == 0 {		return false	} else {		return true	}}/*closure*/func sum(f func(int) bool) func([]int) int {	return func(a []int) int {		sum := 0		for _, v := range a {			if f(v) {				sum += v			}		}		return sum	}}

这里使用sum这个函数 返回两个匿名函数,分别完成对偶数和奇数的相加结果输出,这里面的外部环境是 f func(int) bool, 这个函数的不同,生产出来的匿名函数的功能也就不一样。

##闭包官方有个案例可以参考:

##代码:

转载于:https://my.oschina.net/panyingyun/blog/299310

你可能感兴趣的文章
中国大学MOOC —— 学习笔记(四)
查看>>
访问,ringbtn,
查看>>
致橡树
查看>>
一段测试代码,哦哦哦,
查看>>
uiimagepickercontroller,中文,--》摘
查看>>
第四次作业
查看>>
在python中调用js或者nodejs
查看>>
【年终总结】2年计划还是要有的,万一实现了呢?(转自叶小钗)
查看>>
数字图像处理学习笔记(1.1)---位图的读写、几何变换、傅里叶变换、直方图均衡...
查看>>
javascript数组顺序-----1冒泡的另一种比较好理解的写法
查看>>
数据结构-栈的实现之行编译器核心实现
查看>>
C++ Project 积累(2)
查看>>
(1)用VisualSvn Server,Tortoise Svn,AnkhSvn搭建Svn版本控制
查看>>
Mysql索引
查看>>
格式化输出
查看>>
hdu 3804 Query on a tree (树链剖分+线段树)
查看>>
定位、指南针、地理编码
查看>>
Kafka 简介
查看>>
MySQL 用户连接与用户线程
查看>>
RabbitMq、ActiveMq、Kafka和Redis做Mq对比
查看>>