作为 Go 使用者,你如何评价 go module ?

2018-09-26 15:59:21 +08:00
 GTim

这个问题是在百度后台看到的问题,觉得挺有意思的。

因为好几次看到有人使用这个关键字搜索,索性,我就代他询问下大家。


我自己虽然也写了几篇介绍文章,但对 go module 真的是无感,既没那么兴奋,也没那么失望。

相比于其它语言,go 的模块化 /( 包 )版本化之路走的太艰辛了

我现在最期待的是 go module 带来的 proxy 功能,期待在这个 proxy 之上构建的中央仓库。

10426 次点击
所在节点    Go 编程语言
56 条回复
jlkm2010
2018-09-26 16:07:40 +08:00
希望越来越好吧
SuperMild
2018-09-26 16:12:31 +08:00
不管激动不激动,在即将发布 Go2 之前,官方都必须出一个版本管理办法,不然到时要大乱套了。go module 也许不出彩,但基本够用了,也足够简单,这就够了。
janxin
2018-09-26 16:50:17 +08:00
danc
2018-09-26 17:05:33 +08:00
依然是个废的
zhenjiachen
2018-09-26 17:11:36 +08:00
我觉得比野生的包管理好点了,我把之前自己用 glide 管理的项目签到 go mod 了,居然直接支持迁移,执行 go mod init 直接获取了 glide.lock 里面的包了,很方便。
neoblackcap
2018-09-26 17:12:58 +08:00
我只想说,包管理是很难么?为什么现代化的语言都用中心话管理,golang 就整天扯这些。
承认吧,golang 在依赖管理这方面就是个残废,就是想着自己内部有一个超级大的代码库,什么都可以从里面 checkout。
压根就没有考虑其他人的使用。1991 年发明的 Python 跟 Java 都有很成熟的包管理方案,大家都习惯这样的做法。golang 到今天还要整天发文说这个版本号管理,那个机制管理。简直是败笔,无病呻吟,自找麻烦,抄都不会抄!
polythene
2018-09-26 17:33:53 +08:00
难道就只有我好奇,楼主是怎么"在百度后台" "看到有人使用这个关键字搜索"的吗?
pabupa
2018-09-26 17:39:28 +08:00
一开始看,感觉 golang 的官方库就是要解决所有的问题,,,,不需要第三方支持……
zhujinliang
2018-09-26 17:41:33 +08:00
不感兴趣,继续用最原始的 go get
SuperMild
2018-09-26 17:57:20 +08:00
@neoblackcap 不管包管理还是泛型,要增加一个功能或特性对于 Rob Pike 那些大牛来说毫无难度可言,你今晚下单他明天一早就能送货到家。
qgymje
2018-09-26 17:57:46 +08:00
1. go module 所解决的是取消强制 gopath 的约束,以及 go get 的需要手动操作才能下载依赖的操作
2. 之前使用 vendor 管理工具的,几乎可以无缝切换到 go module ;并且不需要针对包管理选择而去做技术选型了
3. 官方与开源组织会一直提高 go module 的可用性,随着版本的更新,go module 会越来越可靠
neoblackcap
2018-09-26 19:22:38 +08:00
@SuperMild 但是他为什么不做?原因就是 Google 不需要,你们社区要不要,他不管。
Rob 不是圣人,要排资论辈 cpp,Java 哪个不是大牛设计?
错误就是错误,跟谁做的没关系。

历史就是明证,说泛型无用,check error 最好的,官方都在打脸。
taowen
2018-09-26 20:38:03 +08:00
@neoblackcap 就事论事,说说 module 有哪些相比中心化管理的缺点。
glues
2018-09-26 21:02:58 +08:00
@SuperMild 牛逼吹的有点过了,go 开发了这么多年也就这个水平
jlkm2010
2018-09-26 21:45:53 +08:00
@glues 来来来,老哥出来走两步,“也就这个水平” 到底是什么水平啊,来说说看
reus
2018-09-26 23:30:59 +08:00
@neoblackcap 啥都不了解,就开喷?
neoblackcap
2018-09-26 23:53:39 +08:00
@taowen
@reus
不对就要喷,分散代码,靠 github 管理有什么好?
集中的一个源,我可以说有以下几个优点
1. 快速部署镜像
2. 不会因为 github 的地址变更而改变依赖关系。你们自己想想到底有没有 github repo 转让过用户,转让了是不是不用动代码,一个新的项目参与者能用什么方式同步依赖?

为什么 Rob 就一定要采取这样的方式来管理依赖,你们说这个没有受到 Google 内部的基础设施影响,你们自己信吗?
自从 Golang 发布依赖出现了多少依赖管理工具,为什么官方就不钦定一个?原因就是 Google 内部没有这个必要。bazel 加上单一的版本库,完全就可以解决版本控制,构建的问题。但是一般公司不是这样,这样才是为什么 2018 年了,golang 的版本控制还是如此让人蛋疼。

同时你们觉得时不时插入的 check error 没有影响思路的,我觉得也是可以,毕竟这个风格问题。问题也不大,正如没有泛型也可以自己写一个代码生成器生成代码,或者编辑器编写代码片段。但是你们倒是说说用 github 作为代码仓库有什么好处?
lxml
2018-09-27 03:41:53 +08:00
确实想不通,随便 找个 python 的 pip install pip freeze 挺好的,21 世纪的 C 语言了,随便抄 npm pip 都比 go get 拉 master 分支这种一看就巨傻逼的行为好很多很多,因为包管理人家拉的都是 release ……
izgnod
2018-09-27 08:14:19 +08:00
希望 go 越来越好吧,包管理确实蛋疼
per
2018-09-27 08:17:24 +08:00
Rob 自己都说过,在一开始做包管理的时候收到了 Google 内部一个大 repo 的影响,不过现在也在变得越来越好了

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

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

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

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

© 2021 V2EX