Golang 泛型他来了!

2020-06-17 10:00:30 +08:00
 cabbage
https://blog.golang.org/generics-next-step

官方发布了几份草案,其中 go2 的泛型可以前往 https://go2goplay.golang.org 体验
14533 次点击
所在节点    Go 编程语言
85 条回复
lithbitren
2020-06-18 12:22:09 +08:00
@notamail list 还好吧,而且队列手写也好写啊,直接用数组性能比 list 快几倍,我说的是 container/heap
qW7bo2FbzbC0
2020-06-18 12:35:25 +08:00
当初夸 go 不加泛型和官方秉承简洁不多加功能的人会不会回去改掉他们的文章
einsdisp
2020-06-19 19:23:05 +08:00
泛型是 golang 最大的痛点(没有之一)。

golang 其他为人诟病的地方(比如错误处理,比如黑魔法太少),大约可归类为习惯问题,if err != nil 只是写法不一样,习惯之后,也足够用了,何况 goland 对于未处理的错误会标黄提示。

但是没有泛型这个实在不能忍,不仅代码丑陋,而且缺少类型提示与编译期错误检查(如果使用 interface{}、反射来曲线救国),运行时性能损失倒无所谓,绝大多数 golang 项目性能绝非瓶颈。

golang 官方从一开始就说没有泛型只是不好实现(怕拖慢编译速度),而不是彻底不考虑未来加入泛型的可能。

根据[golang 官方的开发者调查]( https://blog.golang.org/survey2019-results):

> Among the 25% of respondents who said Go lacks language features they need, 79% pointed to generics as a critical missing feature

对于语言特性缺失的调查,其中 79%都指向缺少泛型
chai2010
2020-06-23 16:00:56 +08:00
看各个群里和论坛的评论,对 Go2 都是褒贬不一。
我想说的是,这是别人的语言,不可能 100%符合自己的口味,美帝不卡你脖子已经够意思了。

如果真不爽,就直接操刀 ast 搞一个自己的定制语言。
gofmt 和 golint 检查也是基于 ast 做分析。
基于 ast 可以扩展出新的语法来,比如七牛面向数据科学语言的 Go+语言。

可以简单看看这本书:《 Go 语法树入门——开启自制编程语言和编译器之旅!》( github 地址:chai2010/go-ast-book ),
其实也就是把 ast 包里的代码简单讲讲。

当然为了写这个书,我们也定制了一个凹语言:目前已经是一个可以嵌入 Go 语言的脚本语言,
也是基于 Go 语言的 ast 定制,在语言的基本功能完成之后我们会公开代码。
Balthild
2020-07-15 02:04:29 +08:00
@FrankHB 对嘛,你也说了,反人类的不是 <> 语法本身,而是 C++ 为了使用 <> 而多出来的问题。像 Java 、TypeScript 等语言也用 <> 语法表示泛型,但它并没有 C++ 这些反人类的问题。

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

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

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

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

© 2021 V2EX