美文网首页
golang入门到放弃:2.匿名函数、闭包、递归函数

golang入门到放弃:2.匿名函数、闭包、递归函数

作者: 不留余白 | 来源:发表于2020-07-06 14:33 被阅读0次

    匿名函数

    Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。

    • eg1
    func main() {
        a:=10
        b:=5
        //将闭包函数类型赋值给f
        f:=func (c int,d int)int {
            return c+d
        }
        fmt.Println(f(a,b))//15
        fmt.Printf("%T",f,)//func(int, int) int
        fmt.Printf("%T",f(a,b))//int
    }
    
    • eg2
    func main() {
    
       //函数调用 将test2的返回值给f
       f1:=test12()
       //fmt.Printf("%T",f1)
       for i:=5;i<=10 ;i++  {
          fmt.Println(f1())
       }
    }
    
    //可以通过匿名函数和闭包 实现函数在栈区的本地化
    func test12()  func()int{
       a:=10
       fmt.Printf("init=%d\n",a)
       return func() int{
           a++
          return a
       }
    }
    

    输出

    init=10
    11
    12
    13
    14
    15
    16
    
    • eg3 效果等同eg2
    func main() {
       a := 10
       for i := 5; i <= 10; i++ {
          func() int {
             a++
             fmt.Println(a)
             return  a
          }()
       }
    }
    

    输出

    11
    12
    13
    14
    15
    16
    

    递归

    计算n的阶乘

    func main(){
       jiecheng(4) //4*3*2*1=24
     fmt.Println(sum)
    }
    
    var sum int =1
    func jiecheng(n int)int{
       if n==1{
          return sum
       }
       sum*=n
       return jiecheng(n-1)
    }
    

    相关文章

      网友评论

          本文标题:golang入门到放弃:2.匿名函数、闭包、递归函数

          本文链接:https://www.haomeiwen.com/subject/ocwwqktx.html