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