培训首页  >  web前端新闻  >  兄弟连区块链技术Go语言defer的使用

兄弟连区块链技术Go语言defer的使用

[2018-08-22 14:52:00] 浏览量:38 来源:

北京兄弟连IT

  Go语言经过十余年的发展,已成为最流行的新兴语言。目前,Go语言已成为云计算领域的首选语言,且随着近几年区块链的流行,作为底层开发语言的Go再次火爆成为区块链领域第一编程语言,IBMFabic等重量级的区块链项目都是基于Go语言开发的。

 

  殊不知,Go语言可开发的应用项目还有很多。除云计算、区块链等开源项目外,还包含Devops、人工智能、游戏、存储引擎、Web、系统/命令行工具、中间件、测试/持续交付、文件系统等各方面的开源项目。

 

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

高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!

原价1188元的12节区块链进阶课程,现仅需1元!

还可免费领取《Go语言基础实战项目开发》与《Go语言高级实战项目开发》教材两本!!

限时限量!!先到先得!!

 

关注兄弟连区块链公众号可以获得更多区块链技术干货!!!

 

文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息