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

