关于一个go匿名函数的一个小案例

529834149 · · 408 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

func main(){
    var p1,p2 int
    //获得各自的闭包内层函数,闭包作用是保存各自的内层函数的状态
    f1 := GetTaskFunc()
    f2 := GetTaskFunc()
    //执行任务
    p1 =  f1("武松",13)
    p1 =  f1("武松",12)
    p1 =  f1("武松",1)
    
    p2 =  f2("鲁达",13)
    p2 =  f2("鲁达",12)
    p2 =  f2("鲁达",10)
    
    //查看各自的状态,状态保存在各自的闭包中
    fmt.Println("武松的进度是",p1)
    fmt.Println("鲁达的进度是",p2)

}
func GetTaskFunc() func(string ,int) (progress int){
    var progress int = 0
    //定义匿名函数func() 赋值给f变量 f的类型是s(func(string, int)=0x49c110)
    f :=func (name string ,hours int) int {
        fmt.Printf("%s头领带队行军%d个小时\n",name,hours)
        progress += hours
        return progress
    }
    //fmt.Printf("f的类型%T,f的值是%v",f,f)
    return f
}

 


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

408 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传