H5W3
当前位置:H5W3 > 其他技术问题 > 正文

用Go语言进行链式调用,如何实现在其中一个调用报错后直接返回,不执行后面的调用?

比如,v := a(x).b(y).c(z),假如b(y)出错了,如何不执行实现不运行c(z)直接返回?
使用panic如果不recover整个程序就崩掉了,如果在b(y)里面recover还是要运行c(z),如果在外面recover就不优美了。

回答:

看起来你需要 PHP 7 或者 Swift 的 Null coalescing operator 呢。当然了,这种东西 Haskell 也是良好支持的。

回答:

其实 代码库里面用panic,但是不要用recover,然后在package main里面用recover就可以了。
在你写的链式调用的外部

defer func (){if err := recover(); err != nil { ... } }()

recover只在应用层的上层使用,而不要再底层使用,是不是要好一点呢?

本文地址:H5W3 » 用Go语言进行链式调用,如何实现在其中一个调用报错后直接返回,不执行后面的调用?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址