• 闭包函数


    闭包函数

    /*
    返回函数的函数
    闭包可以保存内部函数的状态数据
    正常函数结束后,声明的变量会被系统回收,没有闭包时,只能借助全局变量来保存函数的状态数据,这样有很多问题。
    
    */

    行军例子

     1 package main
     2 import "fmt"
     3 
     4 //函数可以重复调用,变量数值不会因为第一次调用的进度而改变。
     5 func main(){
     6     
     7     //获得武松和鲁智深各自的【闭包内层函数】,闭包的作用是【保存各自的内存函数状态】
     8     f1 := GetTaskFunc()
     9     f2 := GetTaskFunc()
    10     
    11     //武松和鲁智深执行任务
    12     f1("武松",1)
    13     f1("武松",2)
    14     p1 := f1("武松", 2)
    15     f2("鲁智深",1)
    16     f2("鲁智深",2)
    17     p2 := f2("鲁智深", 2)
    18     
    19     //查看各自的状态,各自的任务状态被保存在各自的闭包中。
    20     fmt.Println("武松的进度是:",p1)
    21     fmt.Println("鲁智深的进度是:",p2)
    22 }
    23 
    24 /*
    25 闭包函数(返回函数的函数)
    26    var progress int =0 如果不裹一层,那么他是全局变量。
    27    裹一层后,他变成了局部变量。
    28 */
    29 func GetTaskFunc() func(name string,hours int)(progress int){
    30     var progress int =0
    31     
    32     //定义匿名函数,赋值给变量,f的类型是func(string,int)
    33     f := func (name string,hours int) int{
    34         fmt.Printf("%s这个头领带队行军%d小时.
    ",name,hours)
    35         progress+=hours
    36         return progress
    37     }
    38     return f
    39 }
  • 相关阅读:
    购物菜单
    数据库
    增删改查
    页面交互
    计算器
    2020.9.21
    团队-团队编程项目中国象棋-项目总结
    团队-团队编程项目作业名称-最终程序
    课后作业-阅读任务-阅读提问-4
    《20171130-构建之法:现代软件工程-阅读笔记》
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11813418.html
Copyright © 2020-2023  润新知