- 泛型,先抛弃,后又加入
证据:Golang 泛型“回头草”案:Contracts — Draft Design - 异常,必须使用 pkg/errors 模拟异常处理 pkg/errors
提示:-errors.Wrap
——ex1 = new Exception(ex1)
-errors.WithStack
——手动模拟异常的 stacktrace 特性
另外,这样还不足以弥补类型系统给异常处理带来的缺陷。如果数据库 driver 使用errors.WithStack
把 TCP 层的异常包起来的话,那么 TCP 层的细节就会泄露给 driver 的调用者,归根结底是残缺的异常类型系统的锅。 - Channel
Channel vs Promise (aka Task (PS: Task 类)):在 Task 中,数据返回和过程执行完毕是耦合起来的。Channel 是数据返回和过程执行完毕解耦的产物,这样做的灵活性增加了,但是后果就是错误传递也被打断了。
为什么说这样设计是失误?Golang 为了解决错误传递,推出了sync.errgroup
。Golang 设计者正在慢慢偿还 Golang 的负债。 - Annotation (PS: Golang 反引号注解)
Attribute (PS: 特性 (C#)) 已经送到你面前了,但是 Golang 就是不要,导致只能靠字符串。
如果没有强大的 jetbrains IDE 的检查,不知道多少 bug 会额外诞生。 - 依赖系统 (被抛弃的
GOPATH
)
Go 语言设计失误,缺乏远见?
微信公众号 “脑子进煎鱼了” 对上面观点的评论:Go 语言设计失误,缺乏远见?。
- 关于泛型
- 关于错误处理
- 关于依赖管理
- 关于注解