Golang:一个示例讲明白defer怎么用
Posted 保暖大裤衩LeoLee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang:一个示例讲明白defer怎么用相关的知识,希望对你有一定的参考价值。
package main
import "fmt"
func sum(n1 int, n2 int) int
defer fmt.Printf("defer: n1=%d\\n", n1)
defer fmt.Printf("defer: n2=%d\\n", n2)
n1 += 2
n2 += 2
res := n1 + n2
fmt.Printf("func sum res=%d\\n", res)
return res
func main()
res := sum(1, 2)
fmt.Printf("func main res=%d\\n", res)
- defer修饰的语句暂时不会执行,这些语句将会按照顺序被压入一个独立的栈中
- 当函数执行完毕后,按照栈先进后出的原则出栈并执行
- 在defer将语句压入栈中时,语句中相关变量的“值拷贝”也一同压入了栈中,所以defer的语句打印出来的n1和n2的值是1和2
输出结果:
func sum res=7
defer: n2=2
defer: n1=1
func main res=7
defer的价值在于,当函数执行完毕后,进行一些资源关闭和回收的“善后”操作。
以上是关于Golang:一个示例讲明白defer怎么用的主要内容,如果未能解决你的问题,请参考以下文章