美文网首页Go Lang 实战
Go函数-延迟调用(三)

Go函数-延迟调用(三)

作者: 草莓君_ | 来源:发表于2019-08-01 16:20 被阅读0次

在go语言里,defer可是实现延迟函数调用。语句defer向当前函数注册稍后执行的函数调用。这些调用被称做延迟调用,因为它们知道当前函数执行结束前才被执行,常用于资源释放、解除锁定,以及错误处理等操作。

func main() {
    f, err := os.Open("./main.go")
    if err != nil {
        log.Fatal(err)
    }

    defer f.Close()    //仅注册,直到main退出前才执行

    println("hello world")
}

延迟调用注册的是调用,必须提供执行所需参数(哪怕为空)。参数值在注册时被复制并缓存起来。如对状态敏感,可改用指针。

func main() {
    x, y := 1, 2

    defer func(a int) {
        println("defer x, y =",a, y)  //y为闭包引用
    }(x)                    //注册时复制调用参数

    x += 100                    //对x的修改不会影响延迟调用
    y += 200
    println(x, y)
}

输出:

101 202
defer x, y = 1 202

相关文章

  • Go函数-延迟调用(三)

    在go语言里,defer可是实现延迟函数调用。语句defer向当前函数注册稍后执行的函数调用。这些调用被称做延迟调...

  • 深入理解 Go-Defer的机制

    defer 的作用和执行时机 go 的 defer 语句是用来延迟执行函数的,而且延迟发生在调用函数 return...

  • 关于go 语言中的延迟执行函数

    许多内置的带有返回值的函数无法进行延迟调用 在go语言中,调用自定义函数的结果值可以全部不存在(丢弃)。但是,对于...

  • go/defer

    defer使用 defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(包括通...

  • 一文了解defer操作

    什么是defer? defer是go语言提供的一种用于注册延迟调用的机制,让函数或语句可以在当前函数执行完毕后(包...

  • go defer温柔陷阱

    一、什么是defer? defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后...

  • GO语言学习笔记5-defer的使用

    1.什么是defer defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(...

  • 延迟调用函数

  • C 调用 Go 函数

    我们之前已经让 Go 调用 C 函数,但有些场景下需要 C 来调用Go函数。 Go 使用 export 关键字导出...

  • iOS延迟执行函数需要注意的地方

    当需要延迟执行的函数还没有被调用的时候,再次执行 需要调用 来取消上次的延迟执行函数

网友评论

    本文标题:Go函数-延迟调用(三)

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