defer 也没那么难

2021-06-23  本文已影响0人  追风骚年

示例1

func Test1() {
str := "defer1"
    defer fmt.Println(str)

    str = "defer2"
    defer func() {
        fmt.Println(str)
    }()

    str = "defer3"
    defer func(str string) {
        fmt.Println(str)
    }(str)
    str = "defer4"
}

示例2

func Test2() {

    str := []int{1}
    defer fmt.Println(str)

    str[0] = 2
    defer func() {
        fmt.Println(str)
    }()

    str[0] = 3
    defer func(str []int) {
        fmt.Println(str)
    }(str)

    str[0] = 4
}

示例3

func Test3() {

    str := []int{1}
    defer fmt.Println(str)

    str = []int{2}
    defer func() {
        fmt.Println(str)
    }()

    str = []int{3}
    defer func(str []int) {
        fmt.Println(str)
    }(str)

    str = []int{4}
}

三个示例各有千秋,懂了就真的懂了

上一篇下一篇

猜你喜欢

热点阅读