当前位置 博文首页 > 秒懂Golang匿名函数

    秒懂Golang匿名函数

    作者:温柔的风 时间:2021-05-01 17:58

    上篇文章给大家介绍了go语言匿名函数的使用 需要的朋友点击查看。今天给大家介绍Golang匿名函数的相关知识,具体内容如下:

    概念

    所谓匿名函数,就是没有名字的函数

    匿名函数(英语:Anonymous Function)在计算机编程中是指一类无需定义标识符(函数名)的函数或子程序,普遍存在于多种编程语言中。---wikipedia

    Golang是支持匿名函数的,即在需要使用函数时,再定义函数,匿名函数没有函数名,只有函数体,函数可以被作为一种类型被赋值给函数类型的变量,匿名函数往往以变量方式被传递

    匿名函数经常被用于实现回调函数,闭包等.

    匿名函数定义
    匿名函数的定义就是: 没有名字的普通函数

    func (参数列表) (返回值列表) {
     函数体
    }

    匿名函数的两种使用方式

    一、在定义匿名函数的时候就可以直接使用(这种方式只使用一次)

    package main
    import (
      "fmt"
    )
    func main(){
      res1 := func (n1 int, n2 int) int {
        return n1 + n2
      }(10, 30) //括号里的10,30 就相当于参数列表,分别对应n1和n2
      
      fmt.Println("res1=",res1)
    }
    D:\goproject\src\main>go run hello.go
    res1= 40

    二、将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数

    package main
    import (
      "fmt"
    )
    func main(){
      //将匿名函数fun 赋给变量test_fun
      //则test_fun的数据类型是函数类型,可以通过test_fun完成调用
      test_fun := func (n1 int, n2 int) int {
        return n1 - n2
      }
    
      res2 := test_fun(10, 30)
      res3 := test_fun(50, 30)
      fmt.Println("res2=", res2)
      fmt.Println("res3=", res3)
      fmt.Printf("%T", test_fun)
    }
    D:\goproject\src\main>go run hello.go
    res2= -20
    res3= 20
    func(int, int) int

    全局匿名函数

    全局匿名函数就是将匿名函数赋给一个全局变量,那么这个匿名函数在当前程序里可以使用

    package main
    import (
      "fmt"
    )
    
    //Test_fun 就是定义好的全局变量
    //全局变量必须首字母大写
    var (
      Test_fun = func (n1 int, n2 int) int {
        return n1 - n2
      }
    )
    func main(){
      val1 := Test_fun(9, 7)
    
      fmt.Println("val1=", val1)
    }
    D:\goproject\src\main>go run hello.go
    val1= 2
    js
    下一篇:没有了