zoukankan      html  css  js  c++  java
  • go语言基础之基匿名函数本语法和闭包

    一、匿名函数

    示例1:

    package main
    
    import "fmt"
    
    func main() {
    	a := 10
    	str := "mike"
    
    	//匿名函数,没有函数名字, 函数定义,还没有调用
    	f1 := func() {  //:= 自动推导类型
    		fmt.Println("a = ", a)
    		fmt.Println("str = ", str)
    	}
    
    	f1()
    
    	//给一个函数类型起别名
    	type FuncType func()  //函数没有参数,没有返回值
    	
    	//声明变量
    	var f2 FuncType
    	f2 = f1
    	f2()
    }

    执行结果:

    a =  10
    str =  mike
    a =  10
    str =  mike
    

      

    示例2: 定义匿名函数,同时调用

    package main
    
    import "fmt"
    
    func main() {
    	a := 10
    	str := "mike"
    
    	//定义匿名函数,同时调用
    	func() {
    		fmt.Printf("a = %d, str = %s
    ", a, str)
    	}() //后面的()代表调用此匿名函数
    }
    

    执行结果:

    a = 10, str = mike
    

     

    示例3: 带参数的匿名函数

    package main
    
    import "fmt"
    
    func main() {
    	a := 10
    	str := "mike"
    
    	//带参数的匿名函数
    	f3 := func(i, j int) {
    		fmt.Printf("i = %d, j = %d
    ", i, j)
    	}
    	f3(1, 2)
    }
    

    执行结果:

    i = 1, j = 2
    

      

    示例4: 定义匿名函数,同时调用

    package main
    
    import "fmt"
    
    func main() {
    
    	//定义匿名函数,同时调用
    	func(i, j int) {
    		fmt.Printf("i = %d, j = %d
    ", i, j)
    	}(10, 20)
    }
    

    执行结果:

    i = 10, j = 20
    

      

    示例5: 匿名函数,有参有返回值

    package main
    
    import "fmt"
    
    func main() {
    	//匿名函数,有参有返回值
    	x, y := func(i, j int) (max, min int) {
    		if i > j {
    			max = i
    			min = j
    		} else {
    			max = j
    			min = i
    		}
    
    		return
    	}(10, 20)
    
    	fmt.Printf("x = %d, y = %d
    ", x, y)
    
    }
    

    执行结果:

    x = 20, y = 10
    

      

  • 相关阅读:
    token原理
    1.系统代码读取配置文件
    redis hash怎么用
    那么都数据库表,那么多不同记录。是怎样都存储在一个key-value数据库的?
    jedis操作redis全指南
    redis列表list
    jedis操作
    redis
    android raw与assets资源
    Zoie Merge Policy
  • 原文地址:https://www.cnblogs.com/nulige/p/10232406.html
Copyright © 2011-2022 走看看