go --defer

①: 让该函数做延后执行, 一般在宿主函数返回时执行, 做收尾工作

-- 创建一个defer

package main

import "fmt"

func f1() {
    fmt.Println("func f1")
}
func main() {
    defer f1() //让f1函数延后执行, 现在是先输出了 // main func f1
    fmt.Println("main")
}

-- defer是倒序执行 先进后出

package main

import "fmt"

func main() {
    fmt.Println("开始执行")
    defer f1() //倒序执行, 先进后出 执行后: // 开始执行 f3执行 2执行 f1执行
    defer f2()
    defer f3()
    return
}
func f1() {
    fmt.Println("f1执行")
}
func f2() {
    fmt.Println("f2执行")
}
func f3() {
    fmt.Println("f3执行")
}

-- 

package main

import "fmt"

func takeA() {
    fmt.Println("拿钥匙")
}
func takeB() {
    fmt.Println("拿衣服")
}
func closeTheDoor() {
    fmt.Println("随手关门")
}

func main() {
    defer closeTheDoor() //保证在本函数退出时执行. 一般拿来跟函数"say goodbye"
    fmt.Println("进门")
    takeA()
    takeB()
}

 

posted @ 2019-03-22 14:17  双脚灵活过双手  阅读(151)  评论(0)    收藏  举报