zoukankan      html  css  js  c++  java
  • 15_匿名函数和闭包的使用


    1、在go语言中,所有的匿名函数(规范称为:函数字面量)都是闭包函数,匿名函数不需要定义函数名的一种函数
    实现形式,它并不是一个新概念,可以追溯到语言
    2、闭包:就是一个“函数”捕获了和它在同一个作用域的其他常量。
    这就意味着当闭包被调用的时候,不管程序在什么地方调用,闭包都能够使用这些常量或者变量。
    它并不关心这些捕获的常量和数量是否已经超越了作用域,所以只要这些闭包还在使用,这些变量就还会存在

    package main
    
    
    import "fmt"
    func main() {
    	rank := 1
    	comment := "优秀"
    	//第一种方式,可以通过定义变量来调用匿名函数
    	f := func() {
    		fmt.Printf("rank=%d,comment=%s
    ", rank, comment)
    	}
    	f() //函数调用
    
    
    	//第二种方式,通过定义一个函数类型进行调用
    	type Ftest func()
    	var f2 Ftest = f
    	f2()
    
    
    	//第三种,不通过变量,定义完立即执行
    	//无参无返回值
    	fmt.Println("无参无返回值--")
    	func() {
    		fmt.Printf("rank=%d,comment=%s
    ", rank, comment)
    	}() //()表示对匿名函数的调用
    
    
    	//有参无返回值
    	func(a, b int) {
    		res := a + b
    		fmt.Println(res)
    	}(1, 3) //传参调用
    
    
    	//有参有返回值
    	result := func(a, b int) (res int) {
    		res = a + b
    		return
    
    
    	}(1, 3) //传参调用匿名函数
    	fmt.Println("result=", result)
    
    
    }

    运行结果:


                                 

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    mysql-规避重复插入
    redis-string
    redis-map
    跨库修改
    Python-批量插入
    Python-批量修改
    MongoDB操作符
    Cron表达式
    Mycat修改空指针问题
    项目中常用的linux命令
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439365.html
Copyright © 2011-2022 走看看