利用panic 和 recover 实现一个不包含return 语句但是返回一个非零值得函数

利用panic 和 recover 实现一个不包含return 语句但是返回一个非零值得函数,第1张

概述如题,这个问题是The Go Programming Language 里面的练习5.19,挺有意思的一道题目。 中文版可以参考 https://shifei.me/gopl-zh/ch5... 实现代码如下: package mainimport "fmt"func main() { a := returnN() fmt.Println(a)}func return

如题,这个问题是The Go Programming Language 里面的练习5.19,挺有意思的一道题目。
中文版可以参考 https://shifei.me/gopl-zh/ch5...

实现代码如下:

package mainimport "fmt"func main() {    a := returnN()    fmt.Println(a)}func returnN() (result int) {    defer func() {        if p := recover(); p != nil {            result = p.(int)        }    }()    panic(3)}

运行后,屏幕会打印出3。原因我认为是以下两点:

导致panic异常的函数不会继续运行,但能正常返回。

被延迟执行的匿名函数可以修改函数返回给调用者的返回值。

所以在panic 函数执行后,函数准备返回result 这个变量,之后执行defer 的func,在这个func 里改变了result 的值,从而实现了问题的要求。

总结

以上是内存溢出为你收集整理的利用panic 和 recover 实现一个不包含return 语句但是返回一个非零值得函数全部内容,希望文章能够帮你解决利用panic 和 recover 实现一个不包含return 语句但是返回一个非零值得函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存