• defer 延时执行 用于【灯】开灯和关灯写到一起


    defer 延时

    1 是延迟到return 之前.
    2 如果不写return最后默认都有一个return
     1 /*
     2 defer重要的作用
     3 用于比如第一件事是开灯,最后一件事肯定是关灯。
     4 有时代码写了开灯,最后的代码忘记写上关灯.
     5 利用defer可以实现 开灯和关灯写在一起,但是执行顺序是按照最前和最后执行的。
     6 */
     7 
     8 package main
     9 
    10 import "fmt"
    11 
    12 func main() {
    13     fmt.Println("开门")
    14     defer fmt.Println("关门")  //开门的时候立刻挂起一个关门的程序.  倒数第一执行
    15     fmt.Println("开灯")
    16     defer fmt.Println("关灯") //开灯的时候立刻挂起一个关门的程序.   倒数第二执行
    17     fmt.Println("上课")
    18 
    19 }
    20 
    21 /*
    22 开门
    23 开灯
    24 上课
    25 关灯
    26 关门
    27 */
     1 //结尾有个隐含的return
     2 
     3 package main
     4 
     5 import "fmt"
     6 
     7 func main() {
     8     defer fmt.Println("疑是银河落九天")
     9     fmt.Println("日照香炉生紫烟")
    10     fmt.Println("要看瀑布挂前川")
    11     fmt.Println("飞流直下三千尺")
    12 
    13 }
    14 /*
    15 日照香炉生紫烟
    16 要看瀑布挂前川
    17 飞流直下三千尺
    18 疑是银河落九天
    19 */
     1 // defer 多项内容
     2 
     3 package main
     4 
     5 import "fmt"
     6 
     7 func last() {
     8     fmt.Println("飞流直下三千尺")
     9     fmt.Println("疑是银河落九天")
    10 
    11 }
    12 func main() {
    13     defer last()
    14     fmt.Println("日照香炉生紫烟")
    15     fmt.Println("要看瀑布挂前川")
    16 
    17 }
    18 
    19 
    20 
    21 //也可以通过匿名函数来实现 defer 多项内容
    22 
    23 package main
    24 
    25 import "fmt"
    26 
    27 func main() {
    28         
    29             //defer func(){}() 是匿名函数
    30     defer func() {                     
    31         fmt.Println("飞流直下三千尺")
    32         fmt.Println("疑是银河落九天")
    33     }()
    34 
    35     fmt.Println("日照香炉生紫烟")
    36     fmt.Println("要看瀑布挂前川")
    37 
    38 }
  • 相关阅读:
    Format用法总汇
    packed record与record区别
    将实数取整函数
    取鼠标所在位置对应的窗口句柄
    Delphi中优秀的字符串分割函数
    Jscript中的FSO对象模式
    关于.NET开发中遇到的一个验证视图状态Mac失败的解决方法随笔
    如何延长电脑硬盘的使用寿命
    如何避免U盘中毒
    如何优化Windows XP系统来加快网速
  • 原文地址:https://www.cnblogs.com/chaoyangxu/p/11799052.html
Copyright © 2020-2023  润新知