我正在阅读Mark Summerfield的书中的Programming in Go部分5.6.3中的封闭示例。他将Closure定义为一个“函数”,它捕获“在创建它的同一范围内存在的任何常量和变量,如果它引用它们”。这是一个封闭的例子吗?
他说,一个使用封闭的是匿名函数(或函数文本中去)
他给出了这样的例子:
addPng := func(name string) string { return name + ".png" }
addJpg := func(name string) string { return name + ".jpg" }
fmt.Println(addPng("filename"), addJpg("filename"))
据我所知,匿名函数命名addPng
是字符串的包装连接运算符+
。
如果我理解正确,他将分配一个匿名函数名称,然后用该名称调用该函数。我没有看到这个例子的重点。如果我定义了相同的功能addPng
并调用它里面main()
我得到了相同的结果:
package main
import ("fmt")
func addPng (name string) string {
return name + ".png"
}
func main() {
fmt.Println(addPng("filename"))
}
我明白,我不能定义和使用其他功能里面的功能。但为什么Summerfield的例子中的匿名函数叫做“Closure”?为什么使用包装函数?我错过了什么?