匿名函数(lambda表达式)

匿名函数

  在Go中函数也是值,程序中可以声明一个函数类型的变量,将函数作为参数传递。声明函数为值的变量(匿名函数:可赋值个变量,也可直接执行)

pro04_1_2_1.go

  1. package main
  2. import(
  3. "fmt"
  4. )
  5. //求矩形的面积
  6. func main(){
  7. myfun := func(x int, y int)int{
  8. return x * y
  9. }
  10. fmt.Printf("这个矩形的面积是:3 X 5=%d", myfun(3,5))
  11. }

这种可以把函数当成变量的写法也被称为lambda表达式,或者匿名函数。上面的程序还可以换成下面的写法:

  1. package main
  2. import(
  3. "fmt"
  4. )
  5. var(
  6. myfun = func(x int, y int)int{//求矩形的面积
  7. return x * y
  8. }
  9. )
  10. func main(){
  11. fmt.Printf("这个矩形的面积是:3 X 5=%d", myfun(3,5))
  12. }

除了给了上面的写法,还可以把匿名函数作为返回值

  1. package main
  2. import(
  3. "fmt"
  4. )
  5. func myfunc(x, y int)int{
  6. return func(i, j int)int{//匿名函数
  7. return i * j
  8. }(x, y)
  9. }
  10. func main(){
  11. fmt.Printf("这个矩形的面积是:3 X 5=%d", myfunc(3,5))
  12. }

为什么匿名函数叫lambda 表达式?

 
  

https://www.zhihu.com/question/27448188

参考:https://www.bookstack.cn/read/gobook/go_lang_base-04.1.2.md

 

posted @ 2021-04-11 21:10  zbs666  阅读(258)  评论(0编辑  收藏  举报