Go语言的匿名函数
package main
import "fmt"
func main() {
res := func (n1 int, n2 int) int {
return n1 + n2
}
res1 := res(2, 4)
fmt.Println("res1=", res1)
}
闭包
一个函数和与其相关的引用环境组合的一个整体
func AddUpper() func (int) int {
var n int = 5
return func (x int) int {
n = n + x
return n
}
}
返回的是一个匿名函数,这个匿名函数引用到函数外的变量n,因此这个匿名就和n形成一个整体,构成闭包 。
闭包的应用
给文件添加后缀
package main
import "fmt"
func MakeSuffix(suffix string) func (string) string {
return func(name string) string {
// 如果name没有后缀,则添加,否则就返回原来的name
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}
func main() {
f := MakeSuffix(".jpg")
fmt.Println(f("图一"))
}