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


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

monad 错误 go

艾丽麦克道尔 9 years, 5 months ago

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

kong.ws answered 9 years, 5 months ago

Your Answer