美文网首页
Go 基础 2:defer

Go 基础 2:defer

作者: 听海吹牛逼的声音 | 来源:发表于2019-02-08 14:59 被阅读0次

再小谈下defer的操作,
1:不传递参数,其内部的参数是使用的函数返回前变量的最终值。
2:传参数,可以想成就是到达那行就把参数传过去了,所以不是最终值。
3:传的是参数,所以和1的结果是一个意思。好处是3可以写成独立函数,而不必须是匿名函数,再需要代码复用的时候,3明显是更方便的选择。

func testDefer1() {
    i := 0
    defer func() {
        fmt.Println(i)
    }()

    i = 1
}

func testDefer2() {
    i := 0
    defer func(i int) {
        fmt.Println(i)
    }(i)

    i = 1
}

func testDefer3() {
    i := 0
    defer func(i *int) {
        fmt.Println(*i)
    }(&i)

    i = 1
}

func main() {
    testDefer1()
    testDefer2()
    testDefer3()
}

output:
1
0
1

相关文章

  • Go 基础 2:defer

    再小谈下defer的操作,1:不传递参数,其内部的参数是使用的函数返回前变量的最终值。2:传参数,可以想成就是到达...

  • Go基础笔记

    Go语言基础(一) 流程控制语句:for、if、else、switch、defer for Go只有一种循环结构:...

  • 异常

    1、error接口 2、defer 你可以在Go函数中添加多个defer语句,当函数执行到最后时,这些defer语...

  • golang defer 特性

    defer.go

  • Go语言学习进度(7)

    1.GO语言关键字Interface 举例说明: 2.GO语言关键字defer

  • Go Defer

    Go Defer 如果函数里面有多条defer指令,他们的执行顺序是反序,即后定义的defer先执行。 defer...

  • go 语言学习12--defer和异常处理

    defer go里有个关键字defer 这两段代码会输出什么呢tryDefer1: 2 1tryDefer1: 3...

  • Go教程第二十七篇:Defer

    Defer 本文是《Go系列教程》的第二十二篇文章。 什么是Defer? defer/dɪˈfɜː(r)/ 意为:...

  • goLang异常处理

    defer defer是go提供的一种资源处理的方式。defer的用法遵循3个原则在defer表达式被运算的同时,...

  • Go language quick framework

    hello world structure syntax case defer go...

网友评论

      本文标题:Go 基础 2:defer

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