zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    线程同步(二)—— 条件变量
    线程同步(一)—— 互斥锁
    进程同步(四)—— 消息队列
    Nginx反向代理服务器的配置
    散列表(hash表)
    浅谈bitmap
    进程空间分配和堆栈大小
    拓扑排序
    归并排序
    快速排序
  • 原文地址:https://www.cnblogs.com/wanghaijun999/p/8193894.html
Copyright © 2011-2022 走看看