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
    
    
    }

    运行结果:
        

                           

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    CV2图像操作
    Sobel边缘检测
    matlat之KDTreeSearcher()函数
    linux shell 将多行文件转换为一行
    (转)Shell脚本编程--Uniq命令
    (转)iptables简介
    (转)linux passwd批量修改用户密码
    (转)linux sort 命令详解
    (转)Linux命令之md5sum
    (转)shell实例浅谈之产生随机数七种方法
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439389.html
Copyright © 2011-2022 走看看