Gopher 如何增加摸鱼时间,这篇文章帮到你

Gopher 如何增加摸鱼时间,这篇文章帮到你

Posted by 锐玩道 on June 22, 2021

如果❤️我的文章有帮助,欢迎评论、关注、点赞。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客

很多程序员调侃自己是 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