go 语言 闭包

闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。

“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 

闭包演示:

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

    外部变量引用函数内部的函数,内部函数认为是一个闭包

posted @ 2018-01-04 16:10  whj999  阅读(99)  评论(0编辑  收藏  举报