不懂就问,关于 Go 的包管理

2019-06-13 07:44:54 +08:00
 gramyang

Go 官方推荐,很多人也爱这么写,就是在 import 时直接写 github 地址。不同于 Java 里面下载 jar 包,而是实时从 github 上下载代码。

问题来了,如果 github 上的代码被修改,或者更新了,导致功能变更或者代码结构变更怎么办? go 可以像 Java 一样导入某一个版本的代码吗?

4530 次点击
所在节点    Go 编程语言
30 条回复
shawndev
2019-06-13 12:21:34 +08:00
go mod + goproxy
lhx2008
2019-06-13 12:33:53 +08:00
@Hellert
@zealic
gomod 如果本地有一个工具包要怎么搞,先发版到私有仓库吗,怎么解决耦合问题
randm
2019-06-13 12:37:32 +08:00
体验过 go mod 后又回到 GOPATH 主要方便
Hellert
2019-06-13 12:54:49 +08:00
@lhx2008 go.mod 文件中用 replace 指令
blless
2019-06-13 12:57:35 +08:00
goproxy.cn 速度更快一点
abmin521
2019-06-13 13:04:26 +08:00
至今没解决两个包依赖一个库的不同版本 那能怎么办 fork 呗
还有似乎不能清理?
chennqqi
2019-06-13 13:32:58 +08:00
@Hellert +1 gopath 简单 go get 通用
Muninn
2019-06-13 15:43:53 +08:00
@gramyang 不好意思,我说的不太对。 用了 go module 后,在最后一次 go test 或者 go build 自动补完 go.mod 文件后提交,是会锁定所有版本的。

我当时是想说我没事干就 go get -u,也并没有崩过,这是因为 go mod 的依赖版本冲突后版本选择大的那个版本导致的,知名的库一般都会比较注意,都是向前兼容的。
huiyifyj
2019-06-13 15:46:35 +08:00
现在都使用 go mod 搭配 GOPROXY=https://goproxy.io
aimerforreimu
2019-06-17 23:31:51 +08:00
https://go.likeli.top 这个速度也很快~

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

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

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

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

© 2021 V2EX