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

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

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

10950 次点击
所在节点    Go 编程语言
76 条回复
mcfog
2019-07-17 11:34:47 +08:00
@rrfeng 能用 promise 把异步写清楚的人也许十个里面只有两三个,能用 async-await 写清楚的可能就只有半个,来源于我面试下来的主观感受
qq976739120
2019-07-17 11:43:15 +08:00
@ChristopherWu https://github.com/manucorporat/try . 类似这样的,我随手搜了个,应该有更完善的
ChristopherWu
2019-07-17 11:49:01 +08:00
@qq976739120 所以都要传 lambda 过去,很奇怪的。
fatedier
2019-07-17 11:52:15 +08:00
感觉 "if err != nil " 问题不大, 并不是迫切的需求,泛型才是。
hst001
2019-07-17 11:52:36 +08:00
try 还是没解决 if err != nil 啰嗦的问题
fengjianxinghun
2019-07-17 11:56:40 +08:00
@dbskcnc 好个毛线,标准库内部都偷偷 panic/recover 来当异常用。假如 err 这么好,为什么还用这种自己不推荐,内部偷偷用的玩意?
blless
2019-07-17 12:09:14 +08:00
err 唯一不好用就是没有输出堆栈,return 什么的根本不是问题,代码扫描检查 error 有没有处理就很简单,只要正常处理基本不会崩溃
BBCCBB
2019-07-17 12:17:27 +08:00
这个 try 是真丑
cubecube
2019-07-17 12:21:35 +08:00
按理说 go 的程序和库都是基于源码的,不用考虑二进制兼容性,优化语言不算太麻烦的,还是那帮人太偏执。
polebug
2019-07-17 13:03:47 +08:00
支持!
不喜欢 try 写 if 更自由
wweir
2019-07-17 13:08:35 +08:00
喜欢 rust 的 err handling 方式
xfriday
2019-07-17 13:18:54 +08:00
@wweir rust 的 match err 和 if err 有啥区别?还不是通过返回值
wweir
2019-07-17 13:50:33 +08:00
@xfriday rust 有 '?' 这个 bug 级语法糖。

go 代码里面,最多的 err 处理方式,也就是直接抛给上级,而这个刚好 '?' 可以解决。
有了这个,多了不敢说,60% 的 if err != nil 还是可以消除的。
并且可以很爽的玩起链式调用了,目前随便来个 err 处理,就会打断链式调用
loading
2019-07-17 13:51:51 +08:00
个人觉得 go 没必要用语法糖。
allgy
2019-07-17 14:24:28 +08:00
if err != nil 够用
dbskcnc
2019-07-17 15:01:20 +08:00
@ChristopherWu 返回值通常都得考虑,这样思维强制必须处理错误,不容易出现那种出错了还往下走的情形
dbskcnc
2019-07-17 15:03:16 +08:00
@fengjianxinghun 这个就是见仁见智而已, 不喜欢也正常,或许 rust 那样的适合您的口味
ChristopherWu
2019-07-17 15:08:28 +08:00
@fengjianxinghun 这个喷的好。。求标准库源码做例子,观摩观摩。
ChristopherWu
2019-07-17 15:10:55 +08:00
@dbskcnc 异常不也是一样要考虑?这不算优点。
dbskcnc
2019-07-17 15:14:23 +08:00
@ChristopherWu 出异常的地方通常都跟处理的地方离远了,思维不连续,并且异常容易混一起,也让人很容易偷懒

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

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

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

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

© 2021 V2EX