问题描述
闭包问题常发生在定时任务启动上,例如本来想启动A,B,C,D四个任务,因为处理有误,导致起了4个D任务
问题解析
为什么在闭包中,类似定时任务会出现这个问题,可以看下面这个demo例子
func check(nums []int) error{
//把闭包全部收集
var arr [] func()
//循环放闭包
for _,num := range nums {
//num := num
fmt.Println(num)
//闭包指的是这个匿名函数,他直接引用匿名函数外的变量
//闭包指把函数外面的东西包进来,把匿名函数外的局部变量引入匿名函数内,但是没有立即执行
arr = append(arr, func()