zoukankan      html  css  js  c++  java
  • 16_闭包的一些特性

    闭包函数的特性:就相当于引用传递,在闭包函数内改变外部变量,并不释放,而是彻底修改,直到闭包函数不再使用


    package main
    
    
    import "fmt"
    
    
    //函数的返回值是一个闭包函数,返回函数类型
    func Test01() func() int {
    	var a int //默认值为0
    	return func() int {
    		a++
    		return a * a
    	}
    }
    
    
    //普通函数
    func Test02() int {
    	var b int
    	return b * b
    }
    
    
    func main() {
    	var i int = 1
    	var name string = "steven"
    	func() {
    		i = 2
    		name = "zhao"
    		fmt.Printf("i=%d,name=%s
    ", i, name) ////i=2,name=zhao
    
    
    	}() //()调用匿名函数
    	//闭包函数的特性,就相当于引用传递,在闭包函数内改变外部变量,并不释放,而是彻底修
    	//改,直到闭包函数不再使用
    	fmt.Printf("i=%d,name=%s
    ", i, name) //i=2,name=zhao
    
    
    	//返回闭包函数测试
    	//如果是普通函数调用,则局部变量调用之后就释放了。这是闭包的与众不同之处
    	f := Test01()    //接收一下返回的闭包函数
    	fmt.Println(f()) //1
    	fmt.Println(f()) //4
    	fmt.Println(f()) //9
    	//普通函数测试
    	r := Test02()
    	fmt.Println(r) //0
    	fmt.Println(r) //0
    	fmt.Println(r) //0
    
    
    }

    运行结果:
        

                           

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    Asp.net MVC中 Controller 与 View之间的数据传递
    Asp.net中WebForm 与 MVC的架构区别
    初步理解MVC
    JavaScript 设置、读取Cookie
    JavaScript 设计模式之工厂模式
    JavaScript对象 属性
    JavaScript中对于闭包的理解
    WebApi 实例
    webservice 简单实例
    【转】Linq 语法
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439389.html
Copyright © 2011-2022 走看看