96 条回复  ·  1341 次点击
losephsky 小成 2024-8-15 11:11:00
唔,再早之前不是一堆人各种夸 golang 吗?
LanLiang 小成 2024-8-15 11:12:51
挺好的,说明用的人更多了
HappyAndSmile 小成 2024-8-15 11:33:56
10 多年前就认识?不太相信
jadeborner 小成 2024-8-15 11:34:28
go 已经不错了,还搁这挑三拣四的
uiosun 小成 2024-8-15 11:39:31
@emSaVya #7

- try ... catch 直接包裹住问题,不判断
- 对值的合法性进行判断

当初一直这样写,很简洁。

初转 go 的时候,最难接受的就是 120 行代码,15 个 err != nil 判断……属实有点多了,那会儿最希望的是:你直接 panic 吧,别抛给我了 orz
wysnxzm 小成 2024-8-15 11:43:46
刚看到的 https://i.imgur.com/eiKDpwW.png
assassing 小成 2024-8-15 15:20:36
@Rache1 在 Python 中统一错误处理写习惯了,这是我学习 Go 中最不习惯的地方。本意是让开发根据不同错误,就地给出不同解决恢复方案,但这与保持简单相悖。能写出恢复方法就能写出预防方法,防止异常发生。其他情况,同样只能打个日志干瞪眼。
hez2010 小成 2024-8-15 17:33:06
Go 的错误处理繁琐是一回事,更重要的是设计从根本上就是错误的。

result, err := foo()

一个函数是否发生错误只可能有两种情况,要么发生错误没有结果,要么不发生错误有结果。而 go 的设计直接给你来了个有无结果和有无错误的迪卡尔积,搞出来 4 种情况。
再有,如果你不去手动判断 err 是否为 nil ,则这个可能发生的错误就会直接被无时掉,意味着 go 的错误模型是默认无视掉所有错误。
这种用于错误处理设计不管出现在哪个语言里都是逆天的存在,与其说是错误处理,不如说它就是返回了个 tuple ,而实际上并不存在任何的错误处理机制。
Jinnrry 小成 2024-8-15 17:48:28
go 哪里破败不堪了?
1 、交叉编译,在座各位有能打的吗
2 、部署体验
3 、没有乱七八糟的包,没有各种语法糖,这是非常大的优点。给你一个上万行的 java 、python 、c++代码的项目,经过几十人接手,每人用着奇奇怪怪的语法糖简写,你看看你能看懂几行
4 、真要破败不堪,battmd 全都大面积在拿 go 写业务,这么多大公司都有病吗
BinaryDH 小成 2024-8-15 17:50:53
@wweerrgtc 十几年前认识 Go 这个单词而已
返回顶部