mysql 匿名函数调用_go语言学习笔记(12)-init函数、匿名函数和闭包

init函数介绍

每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被go运行框架调用,也就是说init会在main函数前被调用。

使用细节:

如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程是:变量定义->init函数->main函数

如图:

接着我们在引入包时,如果main.go和utils.go都含有变量定义和init函数时,执行流程会是这样:如图

main.go utils.go

import ("utils.go文件") 变量定义【执行1】

变量定义【执行3】 init函数【执行2】

init函数【执行4】

main函数【执行5】

匿名函数

介绍

go支持匿名函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。

匿名函数使用方式1

在定义匿名函数时直接调用,这种方式匿名函数只能调用一次

匿名函数使用方式2

将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数

全局匿名函数

如果将匿名函数赋给一个全局变量,那么这个匿名函数就成为一个全局匿名函数

闭包

闭包就是一个函数和与其相关的引用环境组合的一个整体。

实例:

对上述代码说明:

1) AddUpper 是一个函数,返回的数据类型是 func (int) int

2) 返回的是一个匿名函数,但是这个匿名函数引用到函数外的n,因此这个匿名函数就和n形成一个整体,构成闭包。

3)当我们反复的调用这个f函数时,因为n是初始化一次,因此每调用一次就进行累计。

4)闭包的关键就是要知道返回的函数它使用(引用)到哪些变量,因为函数和它引用到的变量共同构成闭包。

闭包实践

编写一个程序,具体要求如下

1) 编写一个函数 makeSuffix(suffix string)可以接受一个文件后缀名(比如.jpg),并返回一个闭包

2)调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如.jpg),则返回文件名.jpg,如果已经有.jpg,如果已经.jpg后缀,则返回原文件名。

3)要求使用闭包的方式完成

4)strings.HasSuffix,该函数可以判断某个字符串是否有指定的后缀名。

代码说明:

1)返回的匿名函数和makeSuffix(suffix string)的suffix的变量组合成一个闭包,因为返回的函数引用到suffix这个变量

2)闭包的好处,如果使用传统的方法,也可以轻松实现这个功能,但是传统方法需要每次都传入后缀名,比如.jpg,而闭包因为可以保留上次引用的某个值,所以我们传入一次就可以反复使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值