下面这段代码输出的内容
package main
func main() {
slice := []int{0,1,2,3}
m := make(map[int]*int)
for key,val := range slice {
m[key] = &val
}
for k,v := range m {
fmt.Println(k,"->",*v)
}
}
答案:
3
2
1
panic: exception
解析:defer函数的执行顺序是先进后出,和栈一样,当出现panic的时候,就会按照先进后出的顺序执行defer函数,最后才执行panic。合理利用defer函数可以避免程序异常退出,保证程序的健壮性。