纯吐槽帖 关于 go 的 err 和重载

2021-12-24 17:43:23 +08:00
 partystart

写了几个月的业务了 写 err 真的吐了 牵扯到序列 /反序列话、有任何文件、io 操作的地方都会有 error

报的那么多 error 有啥用? 报那么多 error 没能解决问题 第一行成功 下面的几处 error 第一行的 error 岂不是白打了? 这种与业务无强关联的地方 与业务嵌套这么深 直接全局异常捕捉不就行了?

还有都 21 世纪了 居然不支持重载 输出一样 输入参数不一样 不能重载 就很无语。我写个方法功能一样 还得另外起个名字

这群设计者是学术界呆太久了?

8880 次点击
所在节点    程序员
130 条回复
ch2
2021-12-24 18:29:06 +08:00
c 里就是这样的,go 只是传承了 c 的解决方法
kiripeng
2021-12-24 18:33:13 +08:00
golang 没有全局覆盖的找 error ,不过这个有个好处,立即处理 golang 的错误,按理说不应该执行下来有错误,然后就是比较恶心的事 panic 不知道在哪,不过可以用 pkg.error %w 得到报错位置和 xx ,或者用 runtime.caller 使用,实在受不了就换个语言
CosimoZi
2021-12-24 18:36:35 +08:00
continuation 多少年前就有的东西, goroutine 包装下变成"引领风骚"的成果了. 最喜欢看 v 站不学无术 go 小将表演了.
kiripeng
2021-12-24 18:37:08 +08:00
@kiripeng 至于范型,现在的方案是 code generation 罢了,牺牲编译时间换取性能
partystart
2021-12-24 18:37:18 +08:00
@cmdOptionKana

什么叫好 什么叫做不好 谁掌握好的定义?

go 设计团队自己掌握 他们觉得好就是好

至于什么权衡利弊就更搞笑了 是个人就有个偏好 是个团队都有组织特性

go 设计团队要是喜欢用脚敲代码 他们也可以给 go 加这个特性

你回答下为什么之前不支持范型 下一次要支持范型

是不是也是权衡利弊?第一做的决定正确 第二次做的决定肯定也是正确?

go 团队不停的正确?
yulon
2021-12-24 18:38:55 +08:00
天天吹 Java 序列化格式化,然后写个 log 都能有漏洞是吧
kett
2021-12-24 18:41:57 +08:00
用 Go 写业务确实是麻烦,特别是如果你使用过 java 这种有着成熟生态的语言。
Buges
2021-12-24 18:52:39 +08:00
>这群设计者是学术界呆太久了?
恰恰相反,go 常常被批做“民科设计的语言”,因其重复很多古老语言的错误和缺乏现代成熟 pl 理论支持的特性。
sagaxu
2021-12-24 19:39:18 +08:00
less is more = design less coding more
masterclock
2021-12-24 19:42:09 +08:00
> 这群设计者是学术界呆太久了?
Go 放弃过去几十年语言界的研究成果,自己再搞一套,典型的 “现在的 XX 太臃肿了,我要做一个小而美的 YY”,最后成为更臃肿更屎山的 ZZ 。

Go1.18 加入了泛型,但是不支持泛型方法,导致无法写出高阶抽象来,还是残废。
hutoer
2021-12-24 21:10:27 +08:00
好像哪里看到一句话:golang 做简单的东西很简单,做复杂的东西很复杂
secondwtq
2021-12-24 21:16:47 +08:00
其实 Go 确实有自己的成果啊。Go 的整个历史可以看成一个巨大的技术实验,难道不算是成果么?
EminemW
2021-12-24 21:37:45 +08:00
我挺受不了 没有方法重载,同一个方法要写几次
cmdOptionKana
2021-12-24 21:47:15 +08:00
@partystart

你问:"什么叫好 什么叫做不好 谁掌握好的定义?"

但这个问题问你才对吧,是你一直在说好不好的问题,我和那个 Mohanson 都在说偏好和取舍。

我第一条评论就说了:你可以不喜欢,这是“偏好”。

这已经说得很清楚了啊,每个人都可以有自己的偏好,我也没强求你要说 Go 好啊,能理解吗?

你又问:“你回答下为什么之前不支持范型 下一次要支持范型”

Go 官方一直没有说不做泛型,几年前官方的 Blog 就发文说清楚了,只是没选定方案而已,后续会增加。


@CosimoZi 概念的发明与推广是两回事,在 Go 之前 coroutine 并未引起业界的高度关注,Go 做出了一个非常优秀的实现,所以我说 “几乎可以说” 是成果。
Morii
2021-12-24 21:51:39 +08:00
@yulon #26

啊这
starcraft
2021-12-24 23:05:11 +08:00
你喷 go 我毫无意见,愉快旁观。
但你要把 go 和学术扯上点关系,就不行了。上面人也提了,这货和学术界没半毛关系,建议喷到深处,甩点锅过去也可以。
rekulas
2021-12-24 23:46:20 +08:00
佛性点看待,go 的 err 确实有点不那么令人舒服
不过看过了 python 和 shell 的语法,又觉得 go 还是挺可爱的
az467
2021-12-24 23:47:53 +08:00
但凡那三个人正眼看学术界一眼,都不会做出 if err != nil 这种东西。
Kininaru
2021-12-25 00:04:16 +08:00
我赞同 #6 的说法,Golang 的 err 处理方法和 C 语言真的很像。C 语言里,返回异常(而不是诸如内存泄漏,数组越界的错误)时,就是返回 int 类型的,只不过 Golang 返回了 error 类型
buffzty
2021-12-25 00:08:40 +08:00
又是一个没学过 c 的菜鸟 喷 go 的 err.

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

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

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

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

© 2021 V2EX