The use of Go language-defer

Source: Internet
Author: User

Defer

Automatically executes code when the function exits, regardless of whether the program has an exception

Practical Example 1
package mainimport (    "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}

Run results

    main defer
Example 2
package mainimport (    "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}

Run results

test0 errormain defer
Example 3
package mainimport (    "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") }

Run results

test1 errormain defer
Example 4
package mainimport (    "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") }

Run results

test0 defertest1 defertest1 errormain defer1main defer0

The use of Go language-defer

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.