go匿名函数 | 青训营笔记

76 阅读1分钟

匿名函数是没有函数名的函数,它可以在任何表达式中表示一个函数值。闭包是一种特殊的匿名函数,它可以捕获其周围环境的状态。

匿名函数不一定需要创建闭包,而闭包也不一定只能由匿名函数创建。例如,下面的代码就是一个没有创建闭包的匿名函数:

func () {
fmt.Println (“没有函数名的函数”) 
}

这个函数不能访问其外部作用域中的变量,因为它没有捕获任何状态。 而下面的代码就是一个创建了闭包的命名函数:

func outer () {
greeting := "hello "
inner := func (name string) { 
fmt.Println (greeting + name) 
} 
inner (“John Doe”) 
}

这里,我们定义了一个命名函数outer,它包含了一个变量greeting和一个匿名函数inner。inner函数可以访问greeting变量,因为它创建了一个闭包。我们用inner (“John Doe”)调用了inner函数。

在这里,我们可以看到,匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。这为我们在开发中提供了不少便利,使我们可以不用去为了某些函数声明一个函数名。降低了代码的一些复杂性和提高开发的灵活性。