码迷,mamicode.com
首页 > 编程语言 > 详细

Go语言-defer的使用

时间:2018-06-15 21:50:48      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:new   erro   pre   结果   print   出现   运行   AC   异常   

defer

不管程序是否出现异常,均在函数退出时候,自动执行相关代码

实战

实例1
package main

import (
    "fmt"
)

func main() {
    defer func() {
        fmt.Println("main defer")
    }()

    if err := test0(); err != nil {
        fmt.Println(err.Error())
        return
    }

    if err := test1(); err != nil {
        fmt.Println(err.Error())
        return
    }
}

func test0() error {
    return nil
}

func test1() error {
    return nil
}

运行结果

    main defer
实例2
package main

import (
    "fmt"
    "errors"
)

func main() {
    defer func() {
        fmt.Println("main defer")
    }()

    if err := test0(); err != nil {
        fmt.Println(err.Error())
        return
    }

    if err := test1(); err != nil {
        fmt.Println(err.Error())
        return
    }
}

func test0() error {
    return errors.New("test0 error") 
}

func test1() error {
    return nil
}

运行结果

test0 error
main defer
实例3
package main

import (
    "fmt"
    "errors"
)

func main() {
    defer func() {
        fmt.Println("main defer")
    }()

    if err := test0(); err != nil {
        fmt.Println(err.Error())
        return
    }

    if err := test1(); err != nil {
        fmt.Println(err.Error())
        return
    }
}

func test0() error {
    return nil
}

func test1() error {
    return errors.New("test1 error") 
}

运行结果

test1 error
main defer

实例4

package main

import (
    "fmt"
    "errors"
)

func main() {
    defer func() {
        fmt.Println("main defer0")
    }()

    defer func() {
        fmt.Println("main defer1")
    }()

    if err := test0(); err != nil {
        fmt.Println(err.Error())
        return
    }

    if err := test1(); err != nil {
        fmt.Println(err.Error())
        return
    }
}

func test0() error {
    defer func() {
        fmt.Println("test0 defer")
    }()
    return nil
}

func test1() error {
    defer func() {
        fmt.Println("test1 defer")
    }()
    return errors.New("test1 error") 
}

运行结果

test0 defer
test1 defer
test1 error
main defer1
main defer0

Go语言-defer的使用

标签:new   erro   pre   结果   print   出现   运行   AC   异常   

原文地址:http://blog.51cto.com/12880687/2129966

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!