1.什么是匿名函数?

定义函数时,不指定函数名的函数

2.为什么要使用匿名函数?

​匿名函数用完之后,就会自动释放,避免产生全局变量,造成全局污染​

3.用法


          
          
func ( 参数列表) ( 返回值列表) {
函数体
}
  • 1.
  • 2.
  • 3.
3.1直接使用

          
          
package main

import (
"fmt"
)


func main() {

result : = func ( a int, b int) int {
return a + b
}( 10, 100) //括号里的10,100 就相当于参数列表,分别对应a和b
fmt . Println( "result=", result)

}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

golang匿名函数_数据类型

这个匿名函数使用完就释放掉了,不浪费资源。

3.2匿名函数复制给变量

          
          
package main
import (
"fmt"
)
func main(){
//将匿名函数fun 赋给变量testFun
//则testFun的数据类型是函数类型,可以通过test_fun完成调用
testFun : = func ( a int, b int) int {
return a + b
}

res1 : = testFun( 10, 100)
res2 : = testFun( 50, 100)
fmt . Println( "res2=", res1)
fmt . Println( "res3=", res2)
fmt . Printf( "%T", testFun)
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

golang匿名函数_数据类型_02

4.全局匿名函数


          
          
package main
import (
"fmt"
)

//Test_fun 就是定义好的全局变量
//全局变量必须首字母大写
var (
TestFun = func ( a int, b int) int {
return a - b
}
)
func main(){
res : = TestFun( 10, 100)

fmt . Println( "res=", res)
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

golang匿名函数_匿名函数_03

目前没发现全局匿名函数有啥好处,如果多次使用直接用普通函数即可