记录些使用 Go Modules期间踩过的坑

2020年5月4日 0 条评论 1.01k 次阅读 0 人点赞

开始我是想自己做个工具包托管在Github上,以便下次使用时,可以直接go get 下来,但是遇到一个坑,以至于我踩了好久

一、请注意go mod init的规范

命令:go mod init [名称:请以 github.com/xxxx/xxx 命名]

这点特别重要,千万别随意取名,否则会掉入深坑,一般git仓库写着什么,init 后的名称就是什么

例如:go mod init github.com/xhyonline/x

如果不按这么来,当项目引入此依赖时会报一些错误,这里具体也就不说是什么错误了

二、更新依赖包

我的A项目中依赖了一个我自己写的工具包,但这个工具包前段时间更新了,并且又重新push到了Git上,这个包的地址:
github.com/xhyonline/x

因此我想都没想就执行了下面这条命令

go get -u github.com/xhyonline/x

结果却发现我的包并没有更新,找了大半天原因才发现gopath/pkg/mod/cache下面的竟然有一份缓存,因此当要为项目更新依赖包的时候,请注意是否有缓存,如果有请删了它

三、项目的规范注意

我某项目从Git上clone到本地,此时这个项目中是有go mod的,它会与本地的GoPath中的包相隔离,因此如果缺少什么,请在项目中重新go get ,这里有一个注意点,当项目中有go.mod 文件时,go get的库不会再进入GoPath中,而会产生隔离。其实这一点现在看来也挺好的~因此,某个项目如果缺少某个依赖,就不要再去查看GoPath下是否有依赖了,直接go get一份即可

四、遵守import规范

作为新手,刚开始写Go的时候,引入自己写的工具包都是import ../xxx 类型的相对路径,或者是直接将自己写的工具包扔在了GoPath目录下,使之能全局使用,但是官方并不建议这样,虽然这种写法Go也支持,但是Go更倾向于将自己的包托管在git上,然后通过go mod的方式来管理,以至于GoPath不会太臃肿。

兰陵美酒郁金香

大道至简 Simplicity is the ultimate form of sophistication.

文章评论(0)

你必须 登录 才能发表评论