go panic时如何让函数返回数据?
时间:2021-03-03 10:09:41|栏目:Golang|点击: 次
现在有这样一个问题:某函数如果正常执行,返回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.
不多说。
总结
栏 目:Golang
下一篇:go语言实现处理表单输入
本文标题:go panic时如何让函数返回数据?
本文地址:http://www.codeinn.net/misctech/73608.html






