現(xiàn)在有這樣一個(gè)問(wè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 {}
}
這樣顯然不行,因?yàn)槟莻€(gè)return 1是針對(duì)匿名函數(shù)的, 而非test函數(shù)。
來(lái)看一個(gè)巧妙的方法:
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.
不多說(shuō)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
您可能感興趣的文章:- Go中recover與panic區(qū)別詳解
- Golang捕獲panic堆棧信息的講解
- go語(yǔ)言的panic和recover函數(shù)用法實(shí)例
- go語(yǔ)言異常panic和恢復(fù)recover用法實(shí)例
- GO語(yǔ)言異常處理機(jī)制panic和recover分析
- 詳解go中panic源碼解讀