eddycjy / blog

煎鱼的博客,有点忙,传送门:https://eddycjy.com
3.05k stars 431 forks source link

posts/go/go-moduels/2020-02-28-go-modules/ #60

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

Go Modules 终极入门

https://eddycjy.com/posts/go/go-moduels/2020-02-28-go-modules/

jiangbohhh commented 4 years ago

非常详细,正好最近迁移至go Modules,正好使用上,以前在github上看过去煎鱼大佬的Go Modules入门。

xanpen commented 4 years ago

首先,文章通透; 然后,请教两个问题,文中提到的Go Modules语义化版本控制仅仅是约定对吗?假如开发者没有遵循约定,v0.6.7 之后发的 v0.8.0 做了向下不兼容的新增功能,这样就出现了隐患对吗?

eddycjy commented 4 years ago

@xanpen 是的,你的理解正确。

Go Modules 语义化版本相当于是一个约定规范,是基于 semver 实现的。 如果开发者不遵守,那么 Go Modules 的 “自动更新” 就会导致你的应用遇到问题,因为不兼容,并且这在目前社区中还蛮常见的,我们经常遇到。

另外你提到的 v0.x.x,这本来就属于实验性版本,本质上就不会提供稳定 API 的兼容性,因此存在破坏也是正常的。

csexz commented 3 years ago

在go.mod中使用了 replace github.com/x => github.com/y v1.2.3

执行了go mod tidy以后,会出现以下错误: go: github.com/y@v1.2.3 used for two different module paths (github.com/x and github.com/y)

这个错误是怎么回事?谢谢。