Go关键字defer的特性
Go里面,流程控制语句中有一个defer的关键字,翻译过来就是延迟的意思。下面用代码说话。 func deferFunc() { defer fmt.Println("后打印") fmt.Println("先打印") } defer在函数执行完毕之后,才会执行,所以,我们经常在释放资源或异常处理等需要收尾的场景下会用到defer。 不过defer也有一些“坑”,大家需要注意一下。 func printNumbers() { for i := 0; i < 5; i++ { defer func() { fmt.Print(i) // 输出55555 }() } } 上面例子中,defer是在for循环全部执行完毕之后才会执行,所以i已经变成了5,正确做法是下面这样 func printNum...阅读全文