函数的数据类型及本质

函数的数据类型及本质

  1. 函数类型
func t1(){}  //数据类型 func()
func t2(p int) int {return } //数据类型 func(int)int
//画外音:定义的函数可以作为一种数据类型 ,就如切片那样
  1. 函数本质

    func fun1(a,b int){}
    

    1. 创建函数时,先创建一块内存空间,在内存中存储函数体,函数名fun1存储这块空间的地址(引用类型)。

    2. fmt.Println(fun1) 打印出函数fun1的内存地址

    3. fun1(1,2) 调用执行函数体内容

      画外音:fun1与fun1()有本质的不同

  2. 直接定义一个函数类型变量

    var f func(int,int)
    fmt.Println(f)  //nil 从侧面证明函数类型是引用类型
    
    res1 := t2 //将函数t2(函数地址)赋值给变量res1,res1和t2指向同一个函数体
    //也可以使用res1进行函数调用
    res2 := t2(1) //将函数t2函数进行调用,将函数的执行结果赋值给res2
    
  3. 总结

    1. 函数作为一中复合数据类型,可以看作一种特殊的变量
    2. 函数名():将函数进行调用,函数中的代码会全部执行,然后将return结果返回给调用者
    3. 函数名:指向函数体的内存地址,指针,引用类型
原文地址:https://www.cnblogs.com/henryno12/p/12594807.html