无题
2022-4-20 实习Day18
1、新国结汇款业务问题文档整理。–2小时 100%
2、新国结测试 –3小时 100%
Golang编程学习(part 14)
1、闭包介绍
基本介绍: 闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)
1 | package main |
对上面代码的说明和总结
① AddUpper是一个函数,返回的数据类型是 func (int) int
② 闭包的说明:返回的是一个匿名函数,但是这个匿名函数引用到函数外的n,因此这个匿名函数就和n形成一个整体,构成一个闭包
③ 大家可以这样理解:闭包是类,函数是操作,n是字段。函数和它使用到的n构成闭包
④ 当我们反复调用f函数时,因为n是初始化一次,因此每调用一次就进行一次累加
⑤ 我们要搞清楚闭包的关键,就是要分析出返回的函数它使用(引用)到哪些变量,因为函数和它引用到的变量共同构成闭包
⑥ 对上面代码的一个修改,加深对闭包的理解
2、闭包的最佳实践
请编写一个程序,具体要求如下
编写一个函数 makeSuffix(suffix string) 可以接收一个文件后缀名(比如.jpg),并返回一个闭包
调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如.jpg) ,则返回 文件名.jpg , 如
果已经有.jpg 后缀,则返回原文件名。
要求使用闭包的方式完成
strings.HasSuffix , 该函数可以判断某个字符串是否有指定的后缀。
1 | package main |
代码建议:除非非常有价值的地方,不然不建议使用闭包。闭包这种数据和行为耦合的模型不是一种推荐的编程模型,仅仅是锦上添花,不是不可或缺
上面代码的总结和说明:
① 返回的匿名函数和makeSuffix(suffix string)的suffix变量组合成为一个闭包,因为返回的函数引用到suffix这个变量
② 我们体会一下闭包的好处,如果使用传统的方法,也可以轻松实现这个功能,但是传统方法需要每次都传入后缀名,比如.jpg,而闭包因为可以保留上次引用的某个值,所以我们传入一次就可以反复使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KAZAMAのBlog!

