go panic時如何讓函數返回數據?
更新時間:2019年04月09日 09:46:35 作者:stpeace
今天小編就為大家分享一篇關于go panic時如何讓函數返回數據?,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
現在有這樣一個問題:某函數如果正常執(zhí)行,返回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使用context控制協(xié)程取消的實戰(zhàn)案例
在并發(fā)編程中,合理地控制協(xié)程的生命周期是保證程序穩(wěn)定性和資源可控使用的關鍵,Go語言標準庫中的context包正是為了解決這一問題而生,它為我們提供了取消信號、超時控制、請求作用域的值傳遞等功能,本文將通過一個實際案例,演示如何使用context控制協(xié)程的取消2025-08-08關于golang?struct?中的?slice?無法原子賦值的問題
這篇文章主要介紹了為什么?golang?struct?中的?slice?無法原子賦值的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01gorm golang 并發(fā)連接數據庫報錯的解決方法
今天小編就為大家分享一篇gorm golang 并發(fā)連接數據庫報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07