版权归作者所有,转载请注明出处
一、初识defer
func main(){
defer fmt.println("world")
fmt.println("hello")
}
==>hello
world
=>defer语句会在函数最后执行,被延迟操作的是defer后面的内容
二、特点
defer后面的表达式必须是外部函数的调用.上面的例子是针对fmt.println函数的延迟调用
1)只有当defer语句全部执行,defer所在的函数才能算真正结束执行
2)当函数中有defer语句时,需要等待所有defer语句执行完毕,才会执行return语句
=》defer常用于回收资源,清理收尾
func print(){
fmt.println("hello")
}
func main(){
for ;i<5;i++{
defer print()
}
}
==>5,5,5,5,5
func print(i int){
fmt.println(i)
}
func main(){
for ;i<5;i++{
defer print(i)
}
}
==>4,3,2,1,0(相当于先储存(0,1,2,3,4)),在输出(4,3,2,1,0)【这也是所谓的后进先出】