闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。
“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包演示:
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
外部变量引用函数内部的函数,内部函数认为是一个闭包