前言golang 中关于第三方库的go mod管理方法
golang 中关于第三方库的管理方法早期有 %GOPATH%下管理,随着版本的更新,这种方法逐渐被取缔了。更好的方法是使用go mod去管理我们的第三方库。本文记录了在使用 go mod 时遇到的问题与使用go mod 的正确步骤。
使用的go 版本为: go1.18.2 windows/amd64
平台:VSCode
请参考:https://www.csdn.net/tags/NtDaggxsODQ3Ni1ibG9n.html。
https://blog.csdn.net/m0_63044390/article/details/123944893。
可以参考:https://cloud.tencent.com/developer/article/1766820
如果你的第三方库目前不能用go install获取就用go get获取。
当你已经准备好了,就可以来跟着我创建一个引入其他库的项目了
首先确保 GO111MODULE=on,可以在cmd中使用 go env 查看,若没有打开(off)请先打开。
项目创建
首先新建一个文件夹来存放你的项目,(注意文件夹路径不要是你的%GOPATH%/src就行了,一定不要是,具体原因好像是为了兼容之前的版本,在%GOPATH%/src下的项目依旧保持了%GOPATH%管理第三方库的方法),之后在该文件夹里再建两个文件夹:src,otherpkg,分别用于存放源码和本地库,自己写的或者下载的别人的如图1所示:
之后打开VScode ,点击:文件->打开文件夹,选择我们创建的文件夹:Project01,如图2所示:
之后,在src中创建hello.go文件:如图3所示:
不出意外的话,点击右上角的运行按钮(需要有code runner插件)你将会得到“hello,go”的输出
引入库
首先我们自己写一个本地库;在otherpkg中创建mytestmod文件夹并创建mytestmod.go文件
之后我们在hello.go中导入我们的这个包,并使用Add这个方法
此时“mytestmod”包报红,原因是它找不到这个包,接下来需要告诉它这个包在哪。
在终端中将路径切换到…/Project01文件夹下(默认就在这个文件夹下了),输入 go mod init Project01
此时该项目下多了一个go.mod文件,之后将导入的包的名字改为“Project01/otherpkg/mytestmod”
保存后点击运行,即可
假如我们导入github上的库呢?
导入GitHub上的库
这里我们以github.com/go-vgo/robotgo为例:
https://gitee.com/veni0/robotgo#https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fgo-vgo%2Frobotgo%2Fblob%2Fmaster%2Fdocs%2Fdoc_zh.md
如图10所示Installation需要用go get 语句:
可以通过cmd或者VScode终端输入:go get github.com/go-vgo/robotgo获得,(首先要设置好代理)
我的是:(一样使用go env 中查看)
GOPROXY=https://proxy.golang.com.cn,direct
之后 在hello.go中import"github.com/go-vgo/robotgo",并将上述链接里的示例代码复制进去如图11
此时会报红,有问题:could not import github.com/go-vgo/robotgo (no required module provides package “github.com/go-vgo/robotgo”)
同样是因为找不到这个库在哪。我们通过 go get 获得的包存在了%GOPATH%PKG/mod文件夹下,但是我们的项目还找不到。
注意到:我们在使用go mod init Project01 后VScode提醒我们go: to add module requirements and sums:
go mod tidy
在终端输入该命令:go mod tidy(同样还是在Project01文件夹下)
之后多了一个go.sum文件
go.mod 也增加了require
这两个文件用来链接我们导入的github.com/go-vgo/robotgo库
之后 import 不再有报红
保存好运行,如果输出
hello,go
3
然后VScode退出全屏,你的鼠标跑到了左上角,并且在慢慢移动,
则代码成功运行。
完成!