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
}
有疑问加站长微信联系(非本文作者)