用Go语言进行链式调用,如何实现在其中一个调用报错后直接返回,不执行后面的调用?
比如,v := a(x).b(y).c(z)
,假如b(y)
出错了,如何不执行实现不运行c(z)
直接返回?
使用panic如果不recover整个程序就崩掉了,如果在b(y)里面recover还是要运行c(z),如果在外面recover就不优美了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来你需要 PHP 7 或者 Swift 的 Null coalescing operator 呢。当然了,这种东西 Haskell 也是良好支持的。
其实 代码库里面用panic,但是不要用recover,然后在package main里面用recover就可以了。
在你写的链式调用的外部
recover只在应用层的上层使用,而不要再底层使用,是不是要好一点呢?