函数和闭包 Go语言基础10 匿名函数和闭包_哔哩哔哩_bilibili
 
匿名函数:
1 func(参数)(返回值){
2     函数体
3 }//没有名字

 

执行:
1.赋给变量后执行
2.定义完后立即执行
 
 
闭包:函数+变量(嵌套该函数的外部,非全局)
 
常见形式:
例子:判断文件后缀
 
 
 
指南例子:
 1 package main
 2 
 3 
 4 import "fmt"
 5 
 6 
 7 func adder() func(int) int {
 8     sum := 0
 9     return func(x int) int {
10         sum += x
11         return sum
12     }
13 }
14 
15 
16 func main() {
17     pos, neg := adder(), adder()
18     for i := 0; i < 10; i++ {
19         fmt.Println(
20             pos(i),
21             neg(-2*i),
22         )
23     }
24 }

 

 

练习:斐波那契数列闭包( 这个数列从第3项开始,每一项都等于前两项之和)
 1 package main
 2 import (   
 3     "fmt"
 4 )
 5 // 返回一个“返回int的函数”
 6 func fibonacci() func() int {
 7    res1 := 0
 8    res2 := 1
 9    return func() int {
10       tmp := res1
11       res1,res2 =res2,(res1+res2)//变化两个变量的值,使得一直延续下去,满足序列“从第三个数开始,每一项等于前两项之和”的要求
12       return tmp//暂时地打印单个
13    }
14 }
15 func main() {
16    f := fibonacci()
17    for i := 0; i < 10; i++ {//打印10个
18       fmt.Println(f())
19    }
20 }

 

 
posted on 2022-08-02 17:41  Jolyne123  阅读(49)  评论(0)    收藏  举报