闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。
“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包演示:
func Adder() func (int) int { var x int return func(delta int) int{ x +=delta return x } } func testcloser(){ var f = Adder() fmt.Println(f(1),"-") fmt.Println(f(20),"-") fmt.Println(f(300),"-") } func main(){ testcloser() } //输出结果 1 - 21 - 321 -
func makeSuffixFunc(suffix string) func(string) string { return func(name string) string { if !strings.HasSuffix(name, suffix) { return name + suffix } return name } } func testSuffix(){ func1:=makeSuffixFunc(".bmp") func2:=makeSuffixFunc(".jpg") fmt.Println(func1("test")) //test.bmp fmt.Println(func2("test")) //test.jpg }
参考:http://blog.csdn.net/mungo/article/details/52481285
参考:http://blog.51cto.com/egon09/1836763
外部变量引用函数内部的函数,内部函数认为是一个闭包