Go 与 泛型: 优点 or 缺陷

2017-02-08 09:26:18 +08:00
 banxi1988

之前看到 Go 中国 的文章: 为什么说 2017 年你必须要学习 Go 了

其中把 Go 语言没有泛型作为其优点之一.

昨天晚上看到新发的文章: Russ Cox 的 2017 年 Go 开发计划

注: Russ Cox 目前是 Go Team 的 leader

其中对于泛型有这么一两句话:

我不相信 Go 团队曾经说过“ Go 不需要泛型”

但我们确实明白,对于 Go 来说缺乏参数多态性是一个显著的障碍。

这样看来, 在 Go 开发团队眼中, Go 没有泛型并不是一个优点啊.

8663 次点击
所在节点    Go 编程语言
128 条回复
mooncakejs
2017-02-08 09:33:03 +08:00
王婆卖瓜
zonyitoo
2017-02-08 09:33:54 +08:00
中国的 Go 开发者把 Go 的所有缺点都当作优点来分析
plqws
2017-02-08 09:35:14 +08:00
国内 Go 开发者看不到 Go 的真正优点,倒是喜欢反驳别人有理有据的喷点。
yegle
2017-02-08 09:42:31 +08:00
绝大多数泛型可以用代码生成来代替?
weiweiwitch
2017-02-08 09:42:57 +08:00
文章里面列的好多问题都是我现在项目开发中遇到的呀!真的写的好痛苦啊。

“泛型将在今年引入”,这句看的好伤心呀!

希望包管理能在今年引入吧。
weiweiwitch
2017-02-08 09:45:38 +08:00
@yegle 这个无形中增加了大量的代码呀。而且未来要修改一些机制,势必要重新生成什么的。遇到一些需要类型信息才能选择和判断的功能,也不太好实现呀。
echo1937
2017-02-08 09:47:00 +08:00
@weiweiwitch 原文是“我不认为泛型将在今年引入”……
weiweiwitch
2017-02-08 09:54:57 +08:00
@echo1937 少贴了几个字,反正都是说泛型今年不会出来,所以我们项目是等不来泛型了。
qianguozheng
2017-02-08 10:03:38 +08:00
当然要看原文。 你这个都是别人理解的文章或者翻译的文章。 一点出入很正常。
从我的观点来看,是否有泛型不重要,重要的是你遇到了什么是必须要泛型的吗?
fatedier
2017-02-08 10:04:56 +08:00
@yegle 看了一些项目目前确实是这么做的,一般会通过 go generate 来生成,但是代码基本上可读性就比较差了。
Gem
2017-02-08 10:15:42 +08:00
最希望的是 |--->! 包管理器 !<---|
weiweiwitch
2017-02-08 10:24:33 +08:00
@qianguozheng 我们对泛型的需求和文章中提到的差不多,即借助泛型来实现一些特殊需要的通用数据结构或算法。没有泛型的话,代码多了不说,更主要是容易引发转型的 bug 。


@Gem 其实这个我也是不太抱希望的。现在已经有一些可用的包管理器了,但最大的问题是有好多开源包并没有按照语义化版本来发布。这个要规范起来也需要很长的时间。
Gem
2017-02-08 10:26:29 +08:00
@weiweiwitch 对的,主要是要官方的一个包管理规范。
ljy2010a
2017-02-08 10:34:54 +08:00
包管理可以看下这里 : https://github.com/golang/dep
kappa
2017-02-08 11:13:13 +08:00
rsc 什么时候当上 Go Team 的 leader 了?
mengzhuo
2017-02-08 11:21:23 +08:00
@fatedier go generate 的质量也是和人有关。
noli
2017-02-08 11:57:32 +08:00
golang 的能力相比 C# 加上 AOT 之后,优势就所剩无几……
C# 在跨平台开发上还有 Xamarin 之类的撑一下场面
golang 除了写 业务 server 之外,没有想到任何别的场合是能用的。
hjc4869
2017-02-08 12:01:31 +08:00
golang 这个语言的 feature 缺失让我怀疑为什么到了 2017 年还有人在用它……
CRVV
2017-02-08 12:02:37 +08:00
@noli
我觉得 docker 还不错,至少能用
Go 的编译器我也用着没发现有什么问题

这俩不算 “业务 server ” 吧?
CRVV
2017-02-08 12:13:11 +08:00
@hjc4869

这话怎么这么奇怪

C, C++, C#, Java, JavaScript, Python, Ruby, Haskell 都缺失了 Common Lisp 的宏
Common Lisp 缺失了 Haskell 的 Type Inference


请问 2017 年应该用什么语言?

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

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

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

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

© 2021 V2EX