匿名函数 javascript-Go语言匿名函数和闭包

2023-08-25 0 1,759 百度已收录

匿名函数是指不需要定义函数名的函数实现方法。 这不是一个新概念。 它可以追溯到1985年的Lisp语言。然而,由于种种原因,C和C++一直不支持匿名函数。 其他各种语言,比如JavaScript、C#和Objective-C匿名函数 javascript,都提供了匿名函数特性,当然也包括go语言

1. 匿名函数

在Go上,函数可以像普通变量一样传递或使用,这类似于C语言的bounce函数。 不同的是Go语言支持随时在代码中定义匿名函数。

匿名函数由不带函数名的函数声明和函数体组成,如下所示:

匿名函数 javascript-Go语言匿名函数和闭包

func(a,b int,z float64) bool {
    return a*b < int(z)
}

匿名函数可以直接参数化为变量或直接执行:

f := func(x, y int) int {
   return x + y
}

匿名函数 javascript-Go语言匿名函数和闭包

2. 关闭

Go 的匿名函数是一个闭包。 我们先来了解一下一些闭包的概念、价值以及应用场景。

基本概念

匿名函数 javascript-Go语言匿名函数和闭包

闭包是一个代码块,可以包含自由变量(未绑定到特定对象),这些变量不是在该块或任何全局上下文中定义的,而是在定义该块的环境中定义的。 要执行的代码块(由于自由变量位于代码块内,并且它们引用的对象不会被释放)为要绑定的自由变量提供评估环境(范围)。

闭包的价值

闭包的价值在于它们可以用作函数对象或匿名函数。 对于类型系统,这意味着除了数据之外还表示代码。 大多数支持闭包的语言都使用函数作为第一级对象,这意味着此类函数可以存储在变量中并作为参数传递给其他函数。 最重要的是它们是否可以由函数动态创建和返回。 ,

匿名函数 javascript-Go语言匿名函数和闭包

Go语言中的闭包

Go语言中的闭包也指的是函数外部的变量。 闭包的实现确保只要使用闭包匿名函数 javascript,闭包引用的变量就会持续存在。

package main
import(
   “fmt”
)
func main(){
		var j int = 5
    a := func()(func()) {
    		var i int = 10
        return func() {
        	fmt.Printf("i, j: %d, %dn", i, j)
        }
    }()
  a()
  j*=2
  a()
}

上面例子的执行结果是:

i,j:10,5
i,j:10,10

在前面的例子中,变量a指向的闭包函数引用了局部变量i和j,i的值是隔离的,闭包之外的环境无法改变。 改变j的值后,再次调用a,发现结果是改变后的值。

在变量a指向的闭包函数中,只有内部匿名函数可以访问变量i,而无法通过其他方式访问它,从而保证了i的安全性。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript 匿名函数 javascript-Go语言匿名函数和闭包 https://www.wkzy.net/game/150664.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务