zoukankan      html  css  js  c++  java
  • 5.5 Go defer

    5.5 Go defer

    程序开发中经常要创建资源(数据库初始化连接,文件句柄,锁等),在程序执行完毕都必须得释放资源,Go提供了defer(延时机制)更方便、更及时的释放资源。

    1.内置关键字defer 用于延迟调用
    2.defer在return前执行,常用于资源释放
    3.多个defer按    先进后出    的机制执行
    4.defer语句的变量,在defer声明时定义
    

    实例

    package main
    
    import (
        "fmt"
    )
    
    func testDefer1() {
        //defer机制 先入后出,如同羽毛球筒
        defer fmt.Println("hello v1") //顺序5
        defer fmt.Println("hello v2") //顺序4
        defer fmt.Println("hello v3") //顺序3
        fmt.Println("aaaaa")          // 顺序1
        fmt.Println("bbbb")           //顺序2
    }
    
    func testDefer2() {
    
        for i := 0; i < 5; i++ {
            //每次循环,defer将后入的语句压到defer栈
            //依旧先入后出
            defer fmt.Printf("i=%d
    ", i)
        }
    
        fmt.Printf("running
    ") //顺序1
        fmt.Printf("return
    ")  //顺序2
    }
    
    func testDefer3() {
        var i int = 0
        //defer是声明时定义好的,之后再修改无效,因此i=0
        defer fmt.Printf("defer i=%d
    ", i)
        i = 1000
        fmt.Printf("i=%d
    ", i)
    }
    
    func main() {
        //testDefer1()
        //testDefer2()
        testDefer3()
    }
  • 相关阅读:
    时间使用
    关于Dubbo说明及备注
    jQuery 的function简单备注
    Eclipse插件
    存储过程和视图的区别
    easyUi jqgrid search
    Python3内置函数——reversed() = 翻转我的世界
    你追求的目标正确吗
    Python3正则表示式(3)
    英语口语学习笔记(13)
  • 原文地址:https://www.cnblogs.com/open-yang/p/11256850.html
Copyright © 2011-2022 走看看