Go 1.18 泛型会来,但官方库支持可能得等等

2021-10-14 16:28:00 +08:00
 nanmu42

Rob Pike: don't change the libraries in 1.18

大意是担心一次改得太大出错了找补不回来( Go 1 得全系列保证兼容,也不希望出现 Python 2/3 的那样的分裂情况),想先看看社区怎么用,再慢慢更新标准库。

标准库的实验会在老地方 golang/x/exp 里展开。

https://github.com/golang/go/issues/48918

8248 次点击
所在节点    Go 编程语言
62 条回复
Mitt
2021-10-14 16:39:53 +08:00
向后兼容是个大坑,目前官方库怎么去兼容并支持泛型都没有个合适的方案,感觉会跟 gomod 之前过渡一样产生一大堆 /v2 /v3 的后缀,写起来一大堆坑
matrix67
2021-10-14 17:19:18 +08:00
Go 语言之父 Rob Pike 昨日发 issue:我建议我们不在 Go 1.18 的标准库中使用泛型 - https:///github.com/golang/go/issues/48918 作者的理由很简单,Go 泛型是 Go 诞生以来最大的一次语言变化,Go 1.18 版本承载了太多的 change,容易出错。并且 Go 核心开发团队也没有使用新泛型的经验,他建议 Go 核心开发团队应该多等待、观察和学习。 我是十分赞同 Rob Pike 的建议的,不要把步子迈得太大。go 应该按照自己的节奏稳步前进。


具体可以看这个 git repo,引入进来增加了不少复杂度,go 的泛型的兼容性以及复杂性都会是比较大的问题:github.com/damonchen/go-generic-tutorial
Rwing
2021-10-14 17:21:48 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 C#吗?除了内存高点,其他不比 go 差啊,甚至更强啊。
(是的,在中国提微软的东西就是政治不正确)
Rwing
2021-10-14 17:22:20 +08:00
欢迎来 C# 体验一下真泛型🙂
SpiritLingPub
2021-10-14 17:23:38 +08:00
@Rwing 咋就政治不正确了,科普下,我现在就使用的.net 开发,感觉比其他的舒服多了
nanmu42
2021-10-14 17:25:18 +08:00
@Rwing 嗨,不存在,每个语言都有优秀的地方。
ipwx
2021-10-14 17:37:28 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 C++ 吗?除了写起来复杂点,其他不比 go 差啊,甚至更强啊。
cmdOptionKana
2021-10-14 17:42:20 +08:00
Go 核心团队性格比较谨慎、稳健,很不错。
Glauben
2021-10-14 17:45:28 +08:00
@Rwing 不得不说一句,国内跟着微软走的程序猿,都想对它吐口吐沫吧。别说进微软,不是每个人都能进微软的。想到当年学.net 学 WP 学 XNA,每次想起来就非常的生气,浪费我好几年时间。不把开发者当人。想吃饭就别跟着微软混,随时砸你饭碗
kidlj
2021-10-14 17:47:37 +08:00
@Mitt Go mod 的 /v2, /v3 是基于 semantic versioning 的主动设计好吧,被你说成了问题。
cyrivlclth
2021-10-14 17:48:31 +08:00
@Rwing 想当年我也是 C#入门的。。。现在为了恰饭,还是乖乖写 Go
rahuahua
2021-10-14 17:48:46 +08:00
@Rwing 后端用.NET 开源项目确实少啊,这是全世界不正确,跟中国没啥关系。微软自己的 DAPR 都用 Go 来写了
pisc
2021-10-14 17:50:21 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 Haskell 吗?除了写起来复杂点,其他不比 go 差啊,甚至更强啊。
Mitt
2021-10-14 17:52:04 +08:00
@kidlj #10 /v2 /v3 是在 go mod 出来之前 gopath 的应对方案,在我看来这是个历史遗留
kiotech
2021-10-14 17:53:41 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 lisp 吗?除了写起来复杂点,其他不比 go 差啊,甚至更强啊。
tabris17
2021-10-14 17:56:15 +08:00
@Rwing 三方库太少,不能什么都自己撸吧
xinhaiw
2021-10-14 18:00:33 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 Rust 吗?除了编译时间长点,其他不比 go 差啊,甚至更强啊。
kidlj
2021-10-14 18:04:21 +08:00
@Mitt 关于 Go mod 的设计,Russ Cox 到今天写了 11 篇长篇博客介绍,其中关于 Semantic Import Versioning 的解释见 https://research.swtch.com/vgo-import
inhzus
2021-10-14 18:16:20 +08:00
那个啥,说句中国互联网圈子政治不正确的话,我能推荐一下 brainfuck 吗?除了编译时间长点,其他不比 go 差啊,甚至更强啊。
Mitt
2021-10-14 18:28:47 +08:00
@kidlj #18 这个确实是,我都没有了解到,不过我印象里在 vgo 出来之前 /v2 就已经有人在用了,因为当时也没有其他方案来管理版本,而且这个设计是真的不敢恭维,我不止一次因为 v1 v2 的问题踩了坑,大多数情况下依旧还是弊大于利的

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

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

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

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

© 2021 V2EX