美文网首页
用匿名函数巧妙验证go语言中defer执行顺序

用匿名函数巧妙验证go语言中defer执行顺序

作者: 码字的程序员 | 来源:发表于2022-07-21 17:14 被阅读0次
编程2.png

defer的执行顺序

在go语言当中,defer通常是在函数当中使用。当函数执行到最后一行代码(包括return)时,函数内的defer语句才会按照逆序执行。

用匿名函数巧妙验证go语言中defer执行顺序实例

package main

import "fmt"

func deferfunc() int {
    a := 1
    b := 2

    defer fmt.Printf("因为a=%v,b=%v \n", a, b)
    fmt.Println("a+b=3")
    return func() int {
        fmt.Println("如果这一行比defer先输出,则说明使用defer语句的函数中,先返回return后执行defer语句,否则相反。")
        return 1
    }()
}
func main() {

    c := deferfunc()
    fmt.Println(c)

}

代码输出:
a+b=3
如果这一行比defer先输出,则说明使用defer语句的函数中,先返回return后执行defer语句,否则相反。
因为a=1,b=2 
1

代码解析

如上代码,我们运用了一个匿名函数(匿名函数的使用方法可以参考:go语言匿名函数,两种声明方法和使用方法)作为返回值,来巧妙地验证defer语句的执行顺序,从输出的内容可知,函数中使用了defer,代码会执行到最后一行,包括return语句,最后才执行defer。

更多go语言语法及其他教程可参考如下内容:

go语言defer执行顺序,用匿名函数验证defer执行顺序

相关文章

  • 用匿名函数巧妙验证go语言中defer执行顺序

    defer的执行顺序 在go语言当中,defer通常是在函数当中使用。当函数执行到最后一行代码(包括return)...

  • Go Defer

    Go Defer 如果函数里面有多条defer指令,他们的执行顺序是反序,即后定义的defer先执行。 defer...

  • 异常

    1、error接口 2、defer 你可以在Go函数中添加多个defer语句,当函数执行到最后时,这些defer语...

  • 提一嘴defer

    1.defer的执行方式类似其它语言中的析构函数,在函数执行体结束后按照调用顺序的相反顺序逐个执行 2.即使函数发...

  • Golang学习笔记-defer关键字学习

    defer学习 很多现代的变成语言中都会有defer关键字,Go语言的defer会在当前函数或是方法返回之前执行传...

  • 【go语言学习】函数function

    函数是组织好的、可重复使用的、用于执行指定任务的代码块。Go语言中支持函数、匿名函数和闭包,并且函数在Go语言中属...

  • go defer易错知识总结

    目录 defer执行时机 defer执行顺序 defer与return谁先谁后 函数包含多个Panic,defer...

  • Golang 函数

    匿名函数 回调函数 闭包 defer 延迟执行函数 多个defer的时候 先延迟的最后执行 先进后出栈原理...

  • Go语言中的函数 为什么是一等公民

    关键点 Go语言中,支持: 普通函数 匿名函数 闭包 在Go语言中,函数属于一等公民(first-class)? ...

  • go语言defer的用法

    用法介绍: defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源、关闭数...

网友评论

      本文标题:用匿名函数巧妙验证go语言中defer执行顺序

      本文链接:https://www.haomeiwen.com/subject/fwufirtx.html