Go 社区否决了新的 try 语句提议

2019-07-17 10:08:43 +08:00
SsuchingYu  SsuchingYu

Proposal: A built-in Go error check function, "try" · Issue #32437 · golang/go https://github.com/golang/go/issues/32437

10969 次点击
所在节点   Go 编程语言  Go 编程语言
76 条回复
mcfog
mcfog
2019-07-17 19:31:17 +08:00
@morethansean 写一些简单的并发和错误处理,面试过程中可能是本能以为 async/await 简单,会有人准备要用,然而最终很少有人能写出来,基本都要让他们回到用 promise 的路上

哦,如果你是说用 await 把所有的并发都变成串行也算是写出代码的话,那可能是 async/await 更容易让人写出代码
morethansean
morethansean
2019-07-17 19:35:36 +08:00
@mcfog #61
为什么要把并发改写成串行?不明白你的逻辑。从使用成本上,promise 比 aa 高是很明显的事实。
secondwtq
secondwtq
2019-07-17 19:41:23 +08:00
@neoblackcap 老哥受了什么刺激,为什么要对牛谈琴呢

@mcfog 我不知道你所谓的”用 async-await 写清楚”是什么意思,但是很明显的 Promise 和 async-await 不是替代关系,从能力上来说 async-await 还要比你 Promise 弱,只用 async-await 写逻辑当然是无法做到的
momo733
momo733
2019-07-17 19:48:27 +08:00
昨天刚投了反对票,宁愿用现在也不想要这个 try
trait
trait
2019-07-17 19:51:47 +08:00
@xfriday 废话,rust 本来就是函数式近亲属,部分特性都是从 Haskell 弄过来的
neoblackcap
neoblackcap
2019-07-17 20:20:20 +08:00
@secondwtq 我只是发了一次言,其实还好。我只是说明一下这东西的优势在哪里,为什么 Monad 是更好的异常处理而且。毕竟一次回复不仅仅是一个人看到。大家也可以看到。大家各取所需,觉得 golang 好的就继续写,觉得其他更好的就去写其他就好了。我觉得没什么必要纠结什么天下第一,毕竟电锯跟锤子不一样,CNC 机床也不能替代凿子。当然爱一样东西,自己能出力去让它变得更好,这样也不错。
lazyfighter
lazyfighter
2019-07-17 21:14:28 +08:00
我最不能理解的是变量在左类型在右,我是真特么别扭
lazyfighter
lazyfighter
2019-07-17 21:14:58 +08:00
还有一个接口的实现,不指定接口,需要参数类型相同,真尼玛傻吊
yegle
yegle
2019-07-18 02:01:11 +08:00
@janxin

try(try(try(try(try(try(try(try(try(try(f()))))))))))


除非 f 的返回类型是 val, err, err, err, err, err, err, err,这个时候更应该关注的的是写 f()的人而不是 try()这个语法糖

更有意义的例子应该是

foo(try(bar(try(baz()))))
abscon
abscon
2019-07-18 10:41:14 +08:00
@xfriday
你的话题从错误处理转进到多线程编程了。
我可以理解为你已经承认了自己在错误处理上对于 Rust 的错误认识么?
毕竟已经不正面回应,而是开始转到下一个话题了。
xfriday
xfriday
2019-07-18 14:09:33 +08:00
@abscon 我想表达的不是你说的意思,而是看不惯 rust 吹,至于错误处理,err,exception,monad 没有哪个有绝对优势,但是 rust 粉的说话方式总是居高临下
xfriday
xfriday
2019-07-18 14:10:21 +08:00
也不清楚你的第二句话是根据何种理论得出的
perfectlaugh
perfectlaugh
2019-07-18 15:08:07 +08:00
我只知道我用 rust 唯一不满的是还没有 stable async 和 windows mio
perfectlaugh
perfectlaugh
2019-07-18 15:10:26 +08:00
而且 rust 和 go 走的道路本身就不一样 有不同的情景可以用不同的工具 不好🐎?
reus
reus
2019-07-23 13:31:57 +08:00
@fengjianxinghun https://github.com/golang/go/wiki/PanicAndRecover wiki 里都教你怎么用了,自己不知道,就说“偷偷”,呵呵。
reus
reus
2019-07-23 13:34:35 +08:00
@fengjianxinghun 这里用 recover 有什么问题?如果代码有 bug,例如 slice 越界,recover 就可以保证其他连接不受影响。panic / recover 本来就是这样用的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/583677

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX