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

Xandy ·
更新时间:2024-09-20
· 815 次阅读

现在有这样一个问题:某函数如果正常执行,返回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.

不多说。

总结

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

您可能感兴趣的文章:go for range坑和闭包坑的分析strings命令分析浅谈Go和C++编译时的一点小区别go代码实现买房贷款月供计算的方法linux下搭建go环境的安装配置讲解golang的空标识符理解为什么Go语言把类型声明放在后面?用go gin server来做文件上传服务使用go gin来操作cookie的讲解在go中使用omitempty的代码实例go for range遍历二维数组的示例



panic GO 数据 函数

需要 登录 后方可回复, 如果你还没有账号请 注册新账号