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 条回复
SsuchingYu
2019-07-17 10:17:18 +08:00
jinliming2
2019-07-17 10:21:09 +08:00
我也觉得,如果单纯是语法糖的话,旧语法和新语法间可以完全相互转换的话,没有必要。
rrfeng
2019-07-17 10:32:55 +08:00
刚好前几天看了眼,感觉 try 根本就没解决问题,只是看起来 /写起来稍微简单了点,所以被拒是正常的。
kidlj
2019-07-17 10:33:45 +08:00
其实 try() 不是真正的 error _handling_,只是检查 err != nil 并直接返回,Griesemer 的 tryhard 工具也验证了在现有代码库里能应用到的地方很有限,为了这一点点便利而引入一种新的写法不值得。

我认为当前 if err != nil 的模式肯定有可以改进的地方,但肯定不是 try(),所以很高兴这个提案被撤回了。
dbskcnc
2019-07-17 10:34:37 +08:00
这个好, 虽然 if err!=nil 是有点啰嗦,但是对于程序稳定性真的非常好
flowfire
2019-07-17 10:37:57 +08:00
@jinliming2 #2
@rrfeng #3

语法糖为什么没有必要。。。
async await 就是 Promise+Generator 的语法糖啊。。。
能节省开发效率当然是好事。。。
janxin
2019-07-17 10:41:47 +08:00
否决不是坏事,起码社区力量的展示吧。
Hellert
2019-07-17 10:42:30 +08:00
要解决就一次性永久解决,别搞什么中间方案,支持否决。
ruyuejun
2019-07-17 10:45:04 +08:00
非常 nice。
没有对写法造成根本性的改变的语法糖,我认为是不必要的。
相应的,js 的 async await 语法糖带来的是颠覆式的书写风格,利远大于弊,当然觉得很好,而 go 中的 try 不但没有根治异常处理,还带来了恶心的函数嵌套。
我理解的是 Go 社区不应该过分坚持简单、单一哲学,坚持没错,但是这个地方如此沉重,和泛型一样,应该有大刀阔斧的改革勇气
boboliu
2019-07-17 10:46:28 +08:00
这个 try 函数作为语法糖的意义确实很低…… go 目前的关键字和内置函数很克制,个人认为加这样一个隐藏细节且对程序稳定性没有好处的谜之语法糖并没有使 go 的 error handle 更友好的效果。
rrfeng
2019-07-17 10:51:28 +08:00
@flowfire
async await 收益巨大,傻子也能写异步了。promise 真的太难了。
try 相比之下收益太小了,错误处理还是要写,只能包一个 func (这点真的很蠢……),而且现在很多 MustFunc 写法。总之看起来就不是个好的解决方案,况且它没解决根本问题。
janxin
2019-07-17 10:52:34 +08:00
try(try(try(try(try(try(try(try(try(try(f()))))))))))

你要是敢让人这么写,就一定会有人这么写。实际上我是支持解决 error hanling 问题,但是 built-in try 函数方案,就是不行...其实我倒是觉得引入 Rust 的?可以,不过大佬们觉得麻烦不是,我觉得这个事情社区可以再推一推
Rorysky
2019-07-17 11:05:47 +08:00
@flowfire go 的事情 能和 ecmascript 一样么?
x7395759
2019-07-17 11:09:21 +08:00
支持!
wysnylc
2019-07-17 11:09:52 +08:00
@janxin #12 只存在不用和滥用,不滥用是不可能的
qq976739120
2019-07-17 11:14:34 +08:00
try 这样的语法糖,第三方实现的很多了,喜欢的早用上了,算啥改进啊
luoyou1014
2019-07-17 11:14:54 +08:00
@janxin rust 的也很麻烦的,match match match unwrap unwrap 顺带 Some 里面的内容可能是引用的,处理起来就是一个字,烦。
ChristopherWu
2019-07-17 11:26:29 +08:00
@qq976739120 go 没有宏,怎么做语法糖?包个函数做法太奇怪了。
ChristopherWu
2019-07-17 11:27:00 +08:00
@dbskcnc 跟异常比起来,哪里对稳定性好?
petelin
2019-07-17 11:28:50 +08:00
有什么好 try 的
错误都不处理 还想写出来好软件

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

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

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

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

© 2021 V2EX