3.5 Go语言中将函数作为值使用

Python010

3.5 Go语言中将函数作为值使用,第1张

在匿名函数中,我们已经见过这种形式,即将匿名函数体整体赋值给某个变量,此时该变量就相当于这个函数,Python中也有类似的表达方式。

通过程序的输出,我们能够观察到:

最后请大家思考,如果匿名函数执行了,程序还能正常运行吗?

答案很显然是不行的,你看看到这样的错误./test_function_values.go:8:3: (func literal)() used as value,这里面有两个问题:

我们尝试修复一下这个问题,我们做了以下修改:

再次运行,有以下显著变化:

既然能赋值给变量,也能在map中使用,在下面的例子中,我们就将函数体赋值给map中的值,我们来分析下面的例子:

对于输出结果,我们有以下结论:

由于函数可以作为值,所以很容易作为参数传给函数。这里来看一个简单的示例:

我们来分析一下上面的代码

前言:go语言函数参数为值拷贝(指针参数为指针拷贝)。

在go语言中,函数也作为一种数据类型,所以函数也可以作为函数的参数来使用。

其中slice是为地址数组指针的拷贝⚠️,持续更新中 ....