分享
golang defer语句简单解析
乐乐J · · 1104 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
defer
下面举例说明了defer语句的作用:
package main
import "fmt"
func main() {
i := 10
defer incr(i)
defer incr2(i)
defer incr3(i)
}
func incr(i int){
j := i -1
fmt.Println(j)
}
func incr2(i int){
j := i -2
fmt.Println(j)
}
func incr3(i int){
j := i -3
fmt.Println(j)
}
输出结果:
GOROOT=C:\Go #gosetup
GOPATH=C:\Users\DELL\go #gosetup
C:\Go\bin\go.exe build -o C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe C:/Users/DELL/ActiveGo/src/spider/main/cmpl.go #gosetup
"C:\Program Files\JetBrains\GoLand 2018年3月2日\bin\runnerw64.exe" C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe #gosetup
7
8
9
Process finished with exit code 0
很明显 defer语句的执行顺序是反的。这种语法给我们的资源关闭提供了很好的帮助。
比如流的关闭啊,文件的关闭啊等等。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1104 次点击
下一篇:Go36-36,37-字符串
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
defer
下面举例说明了defer语句的作用:
package main
import "fmt"
func main() {
i := 10
defer incr(i)
defer incr2(i)
defer incr3(i)
}
func incr(i int){
j := i -1
fmt.Println(j)
}
func incr2(i int){
j := i -2
fmt.Println(j)
}
func incr3(i int){
j := i -3
fmt.Println(j)
}
输出结果:
GOROOT=C:\Go #gosetup
GOPATH=C:\Users\DELL\go #gosetup
C:\Go\bin\go.exe build -o C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe C:/Users/DELL/ActiveGo/src/spider/main/cmpl.go #gosetup
"C:\Program Files\JetBrains\GoLand 2018年3月2日\bin\runnerw64.exe" C:\Users\DELL\AppData\Local\Temp\___go_build_cmpl_go.exe #gosetup
7
8
9
Process finished with exit code 0
很明显 defer语句的执行顺序是反的。这种语法给我们的资源关闭提供了很好的帮助。
比如流的关闭啊,文件的关闭啊等等。