Golang 泛型他来了!

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

官方发布了几份草案,其中 go2 的泛型可以前往 https://go2goplay.golang.org 体验
14531 次点击
所在节点    Go 编程语言
85 条回复
PiersSoCool
2020-06-17 13:42:00 +08:00
不是很明白 泛型和简洁有什么关系 有了泛型 就不简洁了吗
没了泛型 排序代码要写多少种
cmdOptionKana
2020-06-17 13:59:51 +08:00
Go 团队真的很稳,很耐心挑选方案。

而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化,这个设计原则非常棒。

比如,官方的例子 Print 函数使用了泛型,它是这样使用的:

Print([]string{"Hello, ", "world"}) //输出 Hello, world
Print([]int{3, 4, 5}) //输出 345

如果不管 Print 是怎么实现的,只看它是怎么使用的,就会觉得非常简洁,而且兼容 Go 1 。
lxml
2020-06-17 14:34:54 +08:00
有基本能用的泛型对于底层库第三方库都是好事,只是希望不要大幅增加编译时间就行
Kisesy
2020-06-17 15:25:05 +08:00
ChristopherWu
2020-06-17 15:35:33 +08:00
想要泛型,不如来先一起做 betterGo: https://github.com/PioneerIncubator/betterGo
rockyou12
2020-06-17 15:36:37 +08:00
不得不说,不用尖括号<>的泛型真的丑啊……虽然再丑的东西用习惯就好,但()()()()()()要是 ide 不给不同括号不同颜色我真的眼睛会花……
joesonw
2020-06-17 15:39:30 +08:00
@PiersSoCool 生成器还是能解决大部分泛型场景. 如 https://github.com/a8m/syncmap
zjupigeon
2020-06-17 15:43:03 +08:00
Yellow Lives Matter
ChristopherWu
2020-06-17 15:46:20 +08:00
@joesonw 生成器不好做- -,可以看看我上面的项目。
AlohaTing
2020-06-17 17:31:49 +08:00
狼来了这么多次了,也没看见一次啊 ( doge
whoami9894
2020-06-17 17:40:23 +08:00
不知道是不是习惯了 Cpp 的写法,这样写`func Print(type T)(s []T)`我觉得很丑
fengjianxinghun
2020-06-17 17:43:52 +08:00
@cmdOptionKana 又开始尬吹了,敢问主流泛型那个不是这样?
janxin
2020-06-17 18:10:06 +08:00
@rockyou12 这个应该会的
liulaomo
2020-06-17 18:23:16 +08:00
@cmdOptionKana

> 而且他们的思路也很正确,尽量把复杂性留在 “写” 泛型那边,而在 “用” 泛型那边则尽可能简化

用这边怎么设计都会很简化。关键看能不能把 “写” 泛型也给简化了,否则不是一个好设计。
liulaomo
2020-06-17 18:24:38 +08:00
@rockyou12 为什么大家都这么追求使用尖括号呢,为什么不想着如何把自定义泛型和内置泛型的语法统一起来呢?
fengjianxinghun
2020-06-17 18:26:22 +08:00
@liulaomo 因为接收器泛型的时候可以有 4 个括号。
liulaomo
2020-06-17 18:32:43 +08:00
@fengjianxinghun 对,我也看着一大堆()不爽,但是何必非得使用<>这种异物呢?和内置泛型统一起来不香吗?
ica10888
2020-06-17 18:57:34 +08:00
看起来是为了兼容之前的语法,希望不要成为第二个 try proposal 。
CosimoZi
2020-06-17 19:04:53 +08:00
恭喜 golang 终于要入类型系统的门了
blless
2020-06-17 20:36:49 +08:00
reddit 各种代码都出来了 反观 v 站,这就是程序员论坛吗

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

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

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

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

© 2021 V2EX