golang
闭包
defer
// 这里使用函数调用栈去理解,defer 压栈,函数返回时出栈
// 直接调用: 变量值的快照
defer fmt.Println(val) :100
// 闭包调用: 传变量
defer func(){
fmt.Println(val) :var
}()
goroutine
// 这里异步闭包打印异常
// 这里for循环起10个goroutine,因为传的是变量,
// k,v的更新速度大于,goroutine打印速度,所以会打印相同值
// 1.创建一个协程后sleep一段时间会正常输出
// 2.使用slice 输出会趋于末尾值
var aMap = make(map[int]int, 10)
for i := 1; i <= 10; i++ {
aMap[i] = i
}
for k, v := range aMap {
go func() {
fmt.Println(k, " ->>>>", v)
}()
}