如果❤️我的文章有帮助,欢迎评论、关注、点赞。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客
很多程序员调侃自己是 CV工程师,而现在有个方法帮到你连 CV 都不用。这种名为“摸鱼”,实则“提高工作效率”的方法,助力你走上 “人生新巅峰”
创建一个自己的Go Module
前言
自到 go 1.13, 官方推出的包管理工具 go module,以来网上介绍:
- 如何使用 go module
- 有哪些好用的 go module
- 每天介绍一个 go module
诸如此类的文章层出不穷,却鲜有提到 如何创建自己的 Go Module。
这时会有老学究跑出来,重复造轮子不好;
但正所谓 再牛逼的肖邦也弹不出哥的忧伤。
高大上的方案固然有值得学习的地方,但不同业务场景有各具特色的需求。
高大上的方案并不一定好用、更不一定用得舒服。
相比自己的效率、舒服而言。轮子是哪位?
所以授人以鱼不如授人以渔,本文就讲述造轮子 如何创建自己的 Go Module。
去基佬网站创建个 git
https://github.com/new (如果 github访问缓慢 的话,使用 国内 gitee 也没问题)用于日常开发维护 与 module 版本发布 

下载刚才创建的项目:git clone git@github.com:coderdao/my_go_mod.git
随便写写一个初代版
进入项目my_go_module, 新增文件 first_kiss.go 文件:
为 first_kiss.go 添加两个方法和相关注释

执行 go mod init 生成go.mod文件
这一步主要是用于,日后 自己的module 大版本更新 或 依赖第三方 module 时使用:
MINGW64 /d/Dev/workplace/golang/my_go_mod (main)
$ go mod init github.com/coderdao/my_go_mod
go: creating new go.mod: module github.com/coderdao/my_go_mod
go: to add module requirements and sums:
        go mod tidy
推送项目到 pkg.go.dev
[pkg.go.dev](https://pkg.go.dev) 站点是 Golang 官方 开发的资源网站,提供 Golang 第三方包的检索功能

当我们成功推送,可以在pkg.go.dev再次搜索(具体可能需要等一段时间,大约是十分钟到半小时的样子),这时候我们可以看到搜索结果了
到另外项目拉取 my_go_mod 测试

如果第一次拉取没反应,需要稍等几分钟同步。再拉取,知道出现打印出信息
然后编写测试文件,测试

查看项目依赖
MINGW64 /d/Dev/workplace/golang/my_go_mod (main) $ go list -m all my_go_mod github.com/coderdao/my_go_mod v0.0.0-20210622121538-fc98211a2f18
两次的版本都是v0.0.0,这么看起来似乎和go modules版本化的理念背道而驰。go module 实际上是可以通过tag来发布版本的。当我们需要发布新版本时,对应的,我们需要使用git tag为这个版本打上标签。假设我们发布的下个版本是v1.0.0:
git tag v1.0.0 git push –tag
你再次获取
go get -u github.com/coderdao/my_go_mod
如果没有更新就 强制指定版本
MINGW64 /d/Dev/workplace/golang/my_go_mod (main)
$ go get -u github.com/coderdao/my_go_mod@v1.0.0
go: downloading github.com/coderdao/my_go_mod v1.0.0
go get: github.com/coderdao/my_go_mod@v0.0.0-20210622121538-fc98211a2f18 updating to
        github.com/coderdao/my_go_mod@v1.0.0: parsing go.mod:
        module declares its path as: my_go_mod
                but was required as: github.com/coderdao/my_go_mod
go env -w GOPROXY=https://goproxy.cn,direct
