go panic时如何让函数返回数据?

 更新时间:2019年04月09日 09:46:35   作者:stpeace  
今天小编就为大家分享一篇关于go panic时如何让函数返回数据?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

现在有这样一个问题:某函数如果正常执行,返回0,如果panic,则返回1,怎么搞呢?

package main 
import "fmt" 
func test() int {
 defer func() {
 if err := recover(); err != nil {
  return 1
 }
 }()
 var p *int
 *p = 0
 return 0
}
func main() {
 fmt.Println("ret is", test())
 for {}
}

这样显然不行,因为那个return 1是针对匿名函数的, 而非test函数。

来看一个巧妙的方法:

package main 
import "fmt" 
func test() (a int) {
 defer func() {
 if err := recover(); err != nil {
  a = 1
 }
 }()
 var p *int
 *p = 0
 return 0
}
func main() {
 fmt.Println("ret is", test())
 for {}
}

OK.

不多说。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 利用rpm打包上线部署golang代码的方法教程

    利用rpm打包上线部署golang代码的方法教程

    RPM是RPM Package Manager(RPM软件包管理器)的缩写,这篇文章主要给大家介绍了关于利用rpm打包上线部署golang代码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • go语言异常panic和恢复recover用法实例

    go语言异常panic和恢复recover用法实例

    这篇文章主要介绍了go语言异常panic和恢复recover用法,实例分析了异常panic和恢复recover使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 使用go操作redis的有序集合(zset)

    使用go操作redis的有序集合(zset)

    这篇文章主要介绍了使用go操作redis的有序集合(zset),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • go语言实现接口查询

    go语言实现接口查询

    这篇文章主要介绍了go语言实现接口查询,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言的队列和堆栈实现方法

    Go语言的队列和堆栈实现方法

    这篇文章主要介绍了Go语言的队列和堆栈实现方法,涉及container/list包的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Goland 2020或2019软件版本去掉a...或fmt...提示的方法

    Goland 2020或2019软件版本去掉a...或fmt...提示的方法

    这篇文章主要介绍了Goland 2020或2019软件版本去掉a...或fmt...提示的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Golang排列组合算法问题之全排列实现方法

    Golang排列组合算法问题之全排列实现方法

    这篇文章主要介绍了Golang排列组合算法问题之全排列实现方法,涉及Go语言针对字符串的遍历及排列组合相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • Golang 语言map底层实现原理解析

    Golang 语言map底层实现原理解析

    这篇文章主要介绍了Golang 语言map底层实现原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • golang结构体与json格式串实例代码

    golang结构体与json格式串实例代码

    本文通过实例代码给大家介绍了golang结构体与json格式串的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • go语言基础语法示例

    go语言基础语法示例

    这篇文章主要介绍了go语言基础语法示例,介绍了go语言较为全面的基础知识,具有一定参考价值,需要的可以了解下。
    2017-11-11

最新评论